prefork.c ve worker.c Apachenin çalışma prensibidir. Bu prensipleri belirlemeniz için Apacheyi ilk kompile edilme aşamasında belirlenir lakin genel olarak ve tavsiye edilen olarak Prefork kullanılır. Diğer işleyiciler bir takip PHP moduler işleyicileri ile uyumlu çalışmaya biliyor.
Prefork: Her bir istek için Apache altında Perchild isteği açar. Tek veya Çift işlemciler için uygundur. Fakat yüksek trafikli sitelerde RAM ve CPU kullanımı yüksektir. Çok fazla istek doğrultusunda Eğer MaxClient değeri artırılmazsa gelen istekler beklemeye alınır. (Tarayıcıda döner durur). MaxClient değeri artırılır ise RAM kullanımı daha da artar ve performans sorunlarına denen olabilir.
Prefork genelde tüm PHP işleticileri ile çalışabilir, mod_php,lsphp,fcgid,php-fpm
Worker: Her bir istek aktif açık olan servis üzerine yönetilir. Hızlı çalışır ve bellek kullanımı düşüktür. Lakin PHP yi işleyecek modul ile ilgili uyum sorunları ve olası diğer işlemlerle ilgili hata durumunda tüm Apache servisleri etkilenir.
Worker genelde kısıtlı bir PHP ileticileri tarafından desteklenir. Hatırladığım kadarıyla PHP-FPM ile çalıştırmayı başarmıştım.
Benim kullandığım örnek konfigürasyon aşağıda ki gibidir. Yine bu özellikler sunucunun sistem kaynaklarına göre artırılıp azaltılması gerekebilir tabii ki.
VPS Sunucular için.
<IfModule prefork.c>
StartServers 4
MinSpareServers 5
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 5000
</IfModule>
VDS ler için
<IfModule prefork.c>
StartServers 8
MinSpareServers 10
MaxSpareServers 20
ServerLimit 450
MaxClients 450
MaxRequestsPerChild 10000
</IfModule>
Dedicated İçin
<IfModule prefork.c>
StartServers 15
MinSpareServers 10
MaxSpareServers 35
ServerLimit 750
MaxClients 750
MaxRequestsPerChild 10000
</IfModule>
Bilgi paylaşımı için teşekkürler.