Manfaat kinerja menggunakan NGINX

16

Mempertimbangkan menggunakan NGINX untuk menyajikan magento- Saya tidak khawatir tentang detail implementasi, tetapi ingin tahu apakah ada yang baik (atau buruk) untuk dikatakan tentang hal itu. Yang juga menarik adalah menggunakan NGINX untuk memuat magento keseimbangan.

Jonathan Bownds
sumber
kami memiliki 2 toko yang berjalan di server khusus dengan NginX. Untuk toko lalu lintas tinggi pasti ada manfaatnya karena NginX hanya menangani permintaan dengan lebih baik dan meninggalkan lebih banyak sumber daya untuk Magento. Untuk toko dengan lalu lintas rendah, saya tidak yakin ada manfaatnya
Sander Mangel

Jawaban:

15

Nginx jelas merupakan pilihan yang baik untuk hosting Magento, dan ia hadir dengan sejumlah manfaat bagus (tapi kecil) yang dapat membantu meningkatkan kinerja situs.

Perbedaan utama antara Nginx dan Apache adalah Nginx menggunakan IO non-pemblokiran, dan Apache hanya menggunakan multithreading / pemrosesan. Apa perbedaannya dan mengapa itu penting? Nah dalam kasus Apache, katakanlah ia memiliki 5 utas, ia dapat menangani 5 permintaan untuk sesuatu pada waktu tertentu. Jika salah satu utas tersebut membutuhkan waktu yang lama untuk diselesaikan, hanya ada 4 utas yang tersisa untuk menangani permintaan masuk lebih lanjut. Jika semua 5 utas terkunci, maka tidak ada permintaan masuk dapat ditangani sampai satu selesai.

Dengan Evented IO ketika sebuah utas menerima permintaan untuk sesuatu, ia memulai suatu peristiwa dan langsung beralih ke permintaan berikutnya. Ketika acara tersebut dipanggil kembali, ia kemudian meneruskan respons ke klien yang relevan.

Ini kira-kira mirip dengan cara kerja javascript asinkron. Anda menjalankan permintaan AJAX dan melanjutkan sampai Anda mendapat panggilan balik.

Pendekatan modern ini sangat cocok untuk melayani banyak file statis kecil tanpa overhead pemunculan banyak utas atau proses sistem pekerja.

Manfaat lain dari Nginx adalah jejak memori yang rendah. Apache mendukung BANYAK hal, dan dalam melakukannya memiliki memori dan jejak komputasi yang tinggi. Anda dapat mengupasnya kembali tetapi Nginx dirancang dari awal untuk menjadi ramping dalam hal memori.

Perbedaannya tidak besar, tetapi ketika Anda meningkatkan ribuan permintaan, perbedaan kecil itu, secara agregat, membuat perbedaan besar.

Sekarang penting untuk diingat bahwa hambatan kinerja terbesar dalam aplikasi Magento adalah eksekusi kode PHP. Di sini ada perbedaan kinerja yang pada dasarnya diabaikan antara Apache dan Nginx. Yang penting adalah menggunakan PHP-FPM, dan MPM pekerja dengan Apache (dan pasti menghindari prefork / mod-php). Alasan utama adalah bahwa Anda hanya memanggil juru bahasa PHP ketika Anda perlu mengeksekusi kode PHP, dan Anda dapat menggunakan perangkat lunak caching op-code seperti APC secara efektif (dan ini adalah satu-satunya peningkat kinerja terbesar yang akan Anda dapatkan).

Poin terakhir untuk dibuat: beberapa modul / aplikasi mengharapkan Apache untuk digunakan dan dokumentasinya dapat disesuaikan dengan penggunaan ModRewrite atau penggunaan file .htaccess. Meskipun ada dukungan gaya ModRewrite di Nginx, tidak ada dukungan untuk solusi gaya direktori .htaccess.

Secara pribadi, saya suka Nginx karena menyajikan konten statis secara efisien, sangat mudah untuk men-setup PHP-FPM dan saya sangat menyukai sintaks konfigurasinya. Ini bukan solusi peluru ajaib untuk masalah kinerja, tapi itu pilihan fleksibel yang kuat untuk dipertimbangkan.

Aaron Bonner
sumber
1
Sebuah jawaban yang bagus yang didukung oleh temuan Magento, Inc.: magentocommerce.com/whitepaper
benmarks
Yup setuju dengan Aaron 100%, Kami juga menggunakan Nginx untuk sebagian besar penyebaran Magento kami karena kemampuannya untuk server konten statis lebih cepat dan menangani jumlah permintaan bersamaan yang lebih tinggi dibandingkan dengan Apache. Satu-satunya downside yang kami temui dengan Nginx adalah pada salah satu proyek kami, itu secara acak melemparkan kesalahan 504 gateway timeout (bahkan ketika beban server sangat rendah). Kami belum menemukan yang ini .. sebagian besar solusi yang dijelaskan di berbagai forum belum banyak membantu.
Vinci Rufus
1

Saya akan mengatakan manfaat kinerja Nginx saat menggunakan Magento diabaikan. Keuntungan IO berbasis acara seperti yang disebutkan oleh Aaron juga berlaku untuk Apache (saat menggunakan acara MPM).

Berbicara tentang Magento secara umum, sebagian besar pemrosesan (99%) terjadi di PHP dan database, jadi mengoptimalkan 1% pertama akan memberi Anda manfaat yang relatif sedikit.

Namun, ada alasan lain untuk memilih Nginx untuk Magento, seperti jejak memori yang lebih kecil, batas kecepatan yang lebih baik, dan dukungan SPDY.

Ada kerugian besar bagi Nginx ketika mengonversi situs Magento yang ada berjalan di Apache, karena banyak pernyataan .htaccess tidak secara langsung memetakan ke pernyataan Nginx. Misalnya, Nginx tidak mendukung nama host di ACL.

Willem
sumber