womble'ın cevabı harika, anlaşılması ve tecrübesizce anlaşılması biraz zor olsa da. Bazı ampirik sayılar ve "e-ticaret" uygulama karşılaştırması yerine "basit içerik" vermek istiyorum.
Mod_wsgi'nin uygun konfigürasyonuyla ilgili olarak farklı kullanım senaryoları oluşturmak için fazla malzeme yok, bu yüzden burada biraz nesir kullanmanın bir sakıncası yok.
A) CMS Siteleri ve Mikrositler
Çoğu müşteri web sitesini işletiyoruz, bunların çoğu içerik siteleri veya django CMS'yi barındıran mikro siteler, bazı özel formlar ve bazen planlanmış arka plan görevleri için Kereviz. Bu siteler kaynaklar için aç değil, birçoğu 32 GB RAM'e sahip tek bir 4 Çekirdekli Intel Xeon'da paralel olarak mutlu bir şekilde çalışıyor. İşte bu tür sitelerin her biri için kullandığımız yapılandırma:
WSGIDaemonProcess example.com user=www-data processes=2 maximum-requests=100
Tek bir sunucuda yaklaşık 40 siteden söz ediyorum, birçoğu Staging sitesi bekleme modundayken. 2 işlemle (her biri varsayılan olarak 15 iş parçacığı olan), sunucu kaynaklarını tahsis etme yetenekleriyle sınırlı olsa da, siteler iyi durumdadır. Bu kurulumun neden yeterli olduğu (CMS) uygulamasının basit yapısı ile doğrulanabilir: Hiçbir isteğin tamamlanması birkaç milisaniyeden fazla sürmesi beklenmez. Apache daima rahat kalacak ve böylece CPU yükü olacaktır.
B) E-Ticaret Siteleri
Yaptığımız daha karmaşık siteler, hala hesaplama açısından ucuz yerel işlemler, ancak işlem süresi açısından pahalı olan harici bağımlılıklar (örn. Rezervasyon verilerini sağlayan web hizmetleri) ile karakterize edilir. Dış istekleri olan işlemler, iş parçacıklarını daha uzun süre kaplar, bu nedenle aynı sayıda kullanıcıyı karşılamak için daha fazla iş parçacığına ihtiyacınız vardır (yukarıdan basit bir CMS sitesine kıyasla). Daha da kötüsü, bir dış servis bir isteği hemen, bazen birkaç saniye boyunca hemen yanıtlayamadığında, iş parçacıkları zaman zaman engellenir. Bu, mevcut tüm mod_wsgi iş parçacığı kullanılıncaya ve beklemenin engellenmesine kadar isteklerin aynı iş kuyruğuna istekte bulunan iş parçacıklarının sıraya sokulmasının hoş olmayan yan etkisine yol açabilir.
Bu senaryolar için 6
süreçleri çok fazla fark görmeden kullanmaya çalıştık ve 12
performans ve operasyonel istikrar konusunda kıyaslanamayacak bir artış görmeye başladık :
WSGIDaemonProcess example.com user=www-data processes=12 maximum-requests=100
150 ve 250 paralel kullanıcılı bazı basit yük testleri sitenin iyi yanıt vermesiyle kolayca yapılabilir ( 2
süreçlerde sitenin kullanılamaz olduğu durumlarda 50 kullanıcıya paralel hizmet verilir). 32 GB RAM'e sahip 2 CPU 6 Çekirdekli Intel Xeon, bu yük altında% 25 CPU kullanımının altında çalışıyor, RAM kullanımı da neredeyse% 25'in altında sabit kalıyor. Burada yalnızca tek bir site için özel bir makine kullandığımızı, bu nedenle diğer sitelerin ihtiyaç duyabileceği kaynakları çalmayacağımızı unutmayın.
Sonuç
Daha fazla sayıda işlem kullanmak, Apache'nin kullanılabilir sistem kaynaklarını kullanıp kullanmamasına izin vermek arasında bir denge kurar. "Saldırı" koşulları altında kararlı bir sunucu sistemi (web sitesi değil!) Tutmak istiyorsanız bu sayıyı düşük tutun. Apache'nin gerektiğinde sistem kaynaklarını (CPU, RAM) kullanmanıza yardımcı olması için daha yüksek bir sayı seçin. Ne kadar yüksek olabilirsiniz, yukarıda kabul edilen cevabın ana hatlarıyla belirtildiği şekilde hesaplar ve sonuçta mevcut CPU gücü ve RAM tarafından sınırlandırılır.
(Not: modwsgi project wiki'nin ConfigurationDirectives bölümünü Apache benzeri arka plan okuma için yastığımın altında tutuyorum. Ayrıca Apache sunucunuzun açık bağlantılarını anladığınızdan ve izlediğinizden emin olun .)