Tanım
PHP-FPM (PHP FastCGI Process Manager), PHP betiklerini web sunucusundan ayrı, önceden başlatılmış işçi işlemlerden oluşan havuzlarda çalıştıran FastCGI uygulamasıdır. Nginx, Apache ve diğer web sunucuları PHP isteklerini FastCGI protokolüyle PHP-FPM’e iletir; her site için ayrı havuz, kullanıcı ve kaynak sınırı tanımlanabilir.
PHP-FPM havuzu nasıl yapılandırılır?
PHP-FPM havuzları, işçi işlemlerin sayısını ve davranışını belirleyen pm ayarlarıyla yapılandırılır. Ubuntu’da havuz dosyaları /etc/php/8.3/fpm/pool.d/ altında bulunur (sürüm numarası kuruluma göre değişir):
[ornek]
user = ornek
group = ornek
listen = /run/php/php8.3-fpm-ornek.sock
pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500pm üç değer alır: static (sabit sayıda işlem), dynamic (alt ve üst sınır arasında esnek) ve ondemand (yalnızca istek gelince işlem başlatır; düşük trafikli siteler için bellek tasarrufu sağlar).
pm.max_children değeri nasıl belirlenir?
pm.max_children, aynı anda çalışabilecek PHP işlemi sayısıdır ve kabaca PHP’ye ayırdığınız belleğin bir işlemin ortalama bellek kullanımına bölünmesiyle hesaplanır. Örneğin PHP için ayrılan bellek 2 GB ve işlem başına ortalama tüketim 80 MB ise üst sınır yaklaşık 25 olur. Değer çok düşükse ziyaretçiler kuyrukta bekler ve günlüklerde server reached pm.max_children uyarısı görülür; çok yüksekse sunucu belleği tükenip swap kullanmaya başlar. Ortalama tüketimi ps ya da top ile ölçebilirsiniz. Nginx ile kurulumu LEMP stack rehberi, PHP bellek sınırını PHP memory_limit artırma rehberi anlatır. Kendi havuz ayarlarınızı yapmak için VPS gibi tam yetkili bir sunucu gerekir.