Orada bir dizi olan MPM modüllerinden (Çok İşleme Modülleri), ama bugüne kadar en yaygın olarak (en azından * nix platformlarında) kullanılan üç ana olanları şunlardır: prefork
, worker
ve event
. Temel olarak, Apache web sunucusunun evrimini ve sunucunun uzun süredir (yazılım terimleriyle) geçmişindeki hesaplama kısıtlamaları dahilindeki HTTP isteklerini yerine getirmek için oluşturulmuş farklı şekilleri temsil eder.
mpm_prefork
... iyi .. her şeyle uyumlu. İstekleri yerine getirmek için bir takım alt süreçleri iptal eder ve alt süreçler bir seferde yalnızca bir talepte bulunur. Sunucu işlemi orada oturuyor, harekete hazır ve iş parçacığı marşaljesiyle uğraşmak zorunda olmadığından, sadece bir seferde yalnızca tek bir istekle ilgilenirken daha modern dişli MPM'lerden daha hızlı - ama aynı anda talepler acı çekiyor, Bir sunucu işlemi ücretsiz olana kadar sırada bekletildiklerinden. Ek olarak, prefork çocuk işlemlerinin sayısında artış yapmaya çalışırken, bazı ciddi RAM'leri kolayca emebileceksiniz.
İş parçacığı güvenli olmayan bir modüle ihtiyacınız olmadıkça prefork kullanmanız büyük olasılıkla tavsiye edilmez.
Kullanılırsa: İplik kullanıldığında kopan modüllere ihtiyacınız olur mod_php
. O zaman bile, FastCGI ve php-fpm
.
Aşağıdaki durumlarda kullanmayın: Modülleriniz diş açmaya zorlamaz.
mpm_worker
iş parçacığı kullanır - eşzamanlılık için büyük bir yardımdır. İşçi, bazı çocuk süreçlerini döndürür; prefork'a benzer şekilde, bazı yedek dişler mümkün olduğunda gelen bağlantılara servis vermek için hazır tutulur. Bu yaklaşım RAM'de çok daha hassastır; Aynı zamanda, eşzamanlılığı çok daha kolay bir şekilde ele alıyor, çünkü bağlantıların ön-yedek bir sunucu yerine ücretsiz bir iş parçacığı (genellikle kullanılabilir) beklemesi gerekiyor.
Kullanıyorsanız: Apache 2.2 veya 2.4'tasınız ve öncelikle SSL kullanıyorsunuz.
Aşağıdaki durumlarda kullanmayın: Uyumluluk için önceden bilgi istemediğiniz sürece, gerçekten yanlış gidemezsiniz.
Bununla birlikte, basamakların bağlantılara bağlı olduğunu ve isteklere bağlı olmadığını unutmayın; bunun anlamı, canlı tutma bağlantısının kapalı olana kadar her zaman bir ipi tutmasıdır (bu, yapılandırmanıza bağlı olarak uzun sürebilir). Bu yüzden elimizde ..
mpm_event
yapısal olarak işçiye çok benzer; Apache 2.4'te “deneysel” den “stabil” duruma getirildi. En büyük fark, canlı bağlantılarla başa çıkmak için özel bir iş parçacığı kullanması ve yalnızca bir istek yapıldığında alt iş parçacıkları için el talepleri (istekleri tamamlandıktan hemen sonra derhal serbest bırakılmasına izin vermek). Bu, bir anda mutlaka aktif olmak istemeyen, ancak ara sıra talepte bulunan müşterilerin eşzamanlılığı için ve müşterilerin uzun süre hayatta kalma zaman aşımına uğraması için harikadır.
Buradaki istisna, SSL bağlantılarıyla; Bu durumda, çalışanla aynı şekilde davranır (verilen bir bağlantıya verilen bağlantıyı, bağlantı kapanana kadar yapıştırma).
Kullanıyorsanız: Apache 2.4'tesiniz ve benzeri konularsınız, fakat boşta bağlantıları bekleyen konulara sahip olmaktan hoşlanmıyorsunuz. Herkes konuları sever!
Aşağıdaki durumlarda kullanmayın: Apache 2.4'te değilsiniz veya uyumluluk için ön desteğe ihtiyacınız var.
Günümüzün slowloris , AJAX ve 6 TCP bağlantısını (tabii ki canlı tutularak) sunucunuzla çoğaltmak isteyen tarayıcılarda, eşzamanlılık sunucunuzu ölçeklendirmek ve ölçeklendirmek için önemli bir faktördür. Apache'nin tarihi, bu bağlamda bunu çözmüştür ve kaynak kullanımı veya ölçek açısından nginx veya lighttpd gibi şeylerle gerçekten aynı düzeyde olmasa da, geliştirme ekibinin hala ilgili bir web sunucusu oluşturmak için çalıştığı açıktır. bugünün yüksek istek eşzamanlılık dünyasında.