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.
nginx
loadbalancing
Jonathan Bownds
sumber
sumber
Jawaban:
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.
sumber
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.
sumber