it-swarm.asia

Hangisi kurulmalı: Apache İşçi mi Prefork mu? Her birinin dezavantajları nelerdir?

Hem Prefork ve İşçi MPM'nin açıklamalarına dayanarak, prefork türü biraz modası geçmiş gibi görünüyor, ancak iki türün gerçekten uygun bir karşılaştırmasını bulamıyorum.

Bilmek istediklerim:

  • İki sürüm arasındaki farklar nelerdir?
  • Her sunucu türünün (dis-) avantajları nelerdir?
  • Koşullara göre hangi tipte seçileceğine dair temel yönergeler var mı?
  • İkisi arasında büyük performans farklılıkları var mı?
55
Aron Rotteveel

Dokümanların dediği gibi, iş parçacığı için güvenli olmayan kitaplıklarla uyumluluk için iş parçacığından kaçınmanız gerekiyorsa prefork MPM'yi kullanmalısınız. Genellikle, önemsiz olmayan Apache modülleri (mod_php - ya da daha doğrusu, bağlandığı sayısız uzantı ve kitaplık - kanonik örnek olarak) bir tür iş parçacığı için güvenli olmayan kitaplığa sahiptir (ya da iş parçacığı için güvenli olmayan bir kod içerir), güzel bir Apache yüklemesi kullanmadıkça, prefork MPM'ye giderdim.

40
womble

Çok sayıda (> 100) eşzamanlı bağlantı sunarken güvensiz uzantıları çalıştırmanın klasik çözümü, bir Apache'den PHP fastCGI'de (mod_fcgid, yerel bir Apache modülü) ve proxy dinamik isteklerini çalıştırmaktır. İşçi MPM'sini çalıştıran örnek.

Bu, statik ve dinamik içeriklerin bir karışımını sunarken, az miktarda bellekle (4 ~ 8GB) birkaç yüzden> 1000'e kadar eşzamanlı bağlantıyı ölçeklendirmenizi sağlar.

Tabii ki, genel dağıtımınızın bir parçası olarak (memcached, vernik) ön uç önbellekleme çözümlerini de araştırmalısınız.

Alternatif olarak, eşzamanlılığı çok daha gelişmiş bir şekilde işleyen Apache 2.4'e ve yerel event MPM'ye yükseltin (iş parçacıkları bağlantı üzerine tetiklenir, çağrılmayı beklemez).

13
adaptr

Sorunun yayınlanmasından bu yana yaklaşık 3 yıl geçti, ancak daha iyi performans elde etmek için PHP kullanıyor olsa bile ön çatal yerine işçi MPM ile gitmenizi tavsiye ederim.

Farklara gelince, ön çatal dişsizdir, bu nedenle sunucu her istemci isteği için bir süreç çatallar (çatallanma yanıt süresinde yemek yememesi için yeni istekleri önceden tahmin eder). İstekler ayrı bir işlemde sunucu olduğundan, bu genellikle belleğinizi ve CPU'nuzu çok daha fazla vergilendirir. Çalışan daha hafif ve daha iyi bellek kullanımına sahip çoklu iş parçacığı getiriyor.

6
aleemb

Bu, sunduğunuz şey için çok özel bir şey. Çok sayıda küçük statik bağlantı yapıyorsanız, iş parçacıkları daha hafif ve daha hızlı olur. Sürekli olarak üretilen birkaç büyük uygulamanız varsa, prefork, olgunluğu ve istikrarı nedeniyle bir Edge'e sahip olabilir. Neden sadece neye ihtiyacınız olduğunu ayarlamayın, birini test edin, MPM modülünü değiştirin, tekrar deneyin, hangisinin size daha uygun olduğunu görün?

2
Marcin

trafik türüne ve türüne ihtiyaç duyar. Ve ayrıca önce prefork ve işçi arasındaki ana farkı anlamanız gerekir. Aşağıdaki makaleyi anlamanıza yardımcı olacağını umuyoruz! http://slashroot.in/how-is-nginx-different-from-Apache

1
sarath