NGINX kullanmanın performans avantajları


16

Magento için NGINX kullanmayı düşündüğümde - uygulama detayları hakkında endişelenmiyorum, ancak bunun hakkında söyleyecek iyi (veya kötü) şeylerin olup olmadığını bilmek istiyorum. Ayrıca özellikle ilgi çeken magentoyu yüklemek için NGINX kullanmaktır.


NginX ile özel bir sunucu üzerinde çalışan 2 mağazamız var. Yüksek trafikli dükkanlar için, NginX'in sadece talepleri daha iyi ele aldığı ve Magento için daha fazla kaynak bıraktığı için kesinlikle bir fayda var. Düşük trafik dükkanlar için herhangi bir fayda olduğundan emin değilim
Sander Mangel

Yanıtlar:


15

Nginx kesinlikle Magento'yu barındırmak için iyi bir seçimdir ve site performansını artırmaya yardımcı olabilecek bir dizi güzel (ama küçük) fayda ile birlikte gelir.

Nginx ve Apache arasındaki temel fark, Nginx'in engellemesiz Evented IO kullanması ve Apache'nin sadece çoklu okuma / işleme kullanmasıdır. Fark nedir ve neden önemlidir? Apache durumunda, 5 iş parçacığı olduğunu varsayalım, herhangi bir zamanda bir şey için 5 istek işleyebilir. Bu iş parçacıklarından birinin tamamlanması uzun zaman alırsa, gelen diğer istekleri işlemek için yalnızca 4 iş parçacığı kalır. 5 iş parçacığının tümü kilitlenirse, bir iş bitene kadar gelen istekler işlenemez.

Bir iş parçacığı bir şey için istek aldığında Evented IO ile bir olayı başlatır ve doğrudan bir sonraki isteğe geçer. Olay geri aradığında, ilgili istemciye yanıtı iletir.

Bu kabaca asenkron javascript'in çalışma şekline benzer. Bir AJAX isteğini kaldırırsınız ve geri arama alana kadar devam edersiniz.

Bu modern yaklaşım, çok sayıda iş parçacığı veya işçi sistemi süreci ortaya çıkarmadan çok sayıda küçük statik dosyaya hizmet etmek için çok uygundur.

Nginx'in bir diğer yararı da düşük bellek alanıdır. Apache çok şey destekliyor ve bu sayede yüksek bir bellek ve hesaplamalı ayak izi var. Geri döndürebilirsiniz, ancak Nginx hafıza açısından yalın olacak şekilde sıfırdan tasarlanmıştır.

Farklılıklar çok büyük değildir, ancak binlerce talebe kadar ölçeklendirdiğinizde, toplamda bu küçük farklılıklar büyük bir fark yaratır.

Şimdi bir Magento uygulamasında en büyük performans darboğazının PHP kodunun yürütülmesi olduğunu hatırlamak önemlidir. Burada Apache ve Nginx arasında performansta temelde ihmal edilebilir bir fark var. Önemli olan PHP-FPM ve çalışan MPM'yi Apache ile kullanmak (ve kesinlikle prefork / mod-php'den kaçınmak). Bunun temel nedeni, yalnızca PHP kodunu yürütmeniz gerektiğinde bir PHP yorumlayıcısı çağırmanız ve APC gibi op kodu önbellekleme yazılımını etkili bir şekilde kullanabilmenizdir (ve bu, alacağınız en büyük performans artışıdır).

Yapılması gereken son nokta: bazı modüller / uygulamalar Apache'nin kullanılmasını beklemektedir ve belgeler ModRewrite veya .htaccess dosyalarının kullanımına yönelik olabilir. Nginx'te ModRewrite stil desteği olsa da, dizin başına .htaccess stil çözümleri için destek yoktur.

Şahsen, Nginx'i seviyorum çünkü statik içeriği verimli bir şekilde sunuyor, PHP-FPM'yi kurmak çok kolay ve yapılandırma sözdizimini oldukça beğendim. Performans sorunlarına sihirli bir mermi çözümü değildir, ancak dikkate alınması gereken sağlam esnek bir seçenektir.


1
Magento, Inc. bulguları tarafından desteklenen harika bir cevap: magentocommerce.com/whitepaper
Benmarks

Yup Aaron% 100 ile hemfikir, Statik içeriği daha hızlı sunucuya alma ve Apache ile karşılaştırıldığında daha fazla sayıda eşzamanlı istek işleme yeteneği nedeniyle Magento dağıtımlarımızın çoğunda Nginx kullanıyoruz. Nginx ile karşılaştığımız tek dezavantaj, projelerimizden birinde, rastgele bir 504 ağ geçidi zaman aşımı hatası atıyor (sunucu yükleri oldukça düşük olsa bile). Bunu henüz çivilemedik. Çeşitli forumlarda açıklanan çözümlerin çoğu çok yardımcı olmadı.
Vinci Rufus

1

Magento kullanırken Nginx'in performans avantajının ihmal edilebilir olduğunu söyleyebilirim. Aaron tarafından belirtildiği gibi olay tabanlı IO avantajı Apache için de geçerlidir (olay MPM'sini kullanırken).

Genel olarak Magento'dan bahsetmişken, çoğu işlem (% 99) PHP ve veritabanında gerçekleşir, bu nedenle ilk% 1'i optimize etmek nispeten az fayda sağlayacaktır.

Bununla birlikte, daha az bellek alanı, daha iyi hız sınırı ve SPDY desteği gibi Magento için Nginx'i seçmek için başka nedenler de var.

Apache üzerinde çalışan mevcut Magento sitelerini dönüştürürken Nginx için büyük bir dezavantaj vardır, çünkü birçok .htaccess ifadesi doğrudan Nginx ifadeleriyle eşleşmez. Örneğin, Nginx ACL'lerde ana bilgisayar adlarını desteklemez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.