PHP-FPM Yapılandırma Aracı

Sunucunuzun RAM miktarına ve ortalama PHP işlem boyutuna göre optimum php-fpm.conf parametrelerini hesaplar. Sonuçlar kopyalamaya hazır yapılandırma bloğu olarak çıktı verir.

📋 Adım 1 — Ortalama işlem boyutunu öğrenmek için bu komutu çalıştırın
$ ps --no-headers -o "rss,cmd" -C php-fpm | awk '{sum+=$1; count++} END {printf "Ortalama: %.1f MB\n", sum/1024/count}'
$ ps --no-headers -o "rss" -C php-fpm | awk '{sum+=$1} END {printf "Toplam: %.0f MB\n", sum/1024}'
Not: Komut sonucunda çıkan değeri (örn. 42.5 MB) aşağıdaki “Ortalama PHP İşlem Boyutu” alanına girin. Sunucu yeni kuruluysa uygulamaya göre tahmin edin: WordPress ≈ 40–80 MB, Laravel ≈ 30–60 MB, düz PHP ≈ 10–30 MB.
Sunucu Bilgileri
MB

Sunucunun toplam fiziksel RAM’i. free -m ile öğrenin.

MB

Yukarıdaki komutu çalıştırıp çıkan değeri girin.

PHP-FPM Pool Ayarları

Çoğu site için dynamic önerilir.

MB

Nginx, MySQL, OS için ayrılacak alan.

adet

Birden fazla site varsa artırın.

Hesaplama Sonuçları

PHP için Kullanılabilir RAM
pm.max_children
maksimum worker sayısı
pm.start_servers
başlangıç worker sayısı
pm.min_spare_servers
min boşta bekleyen
pm.max_spare_servers
max boşta bekleyen
Tahmini Toplam RAM Kullanımı
/etc/php/8.x/fpm/pool.d/www.conf

    

PHP-FPM Nedir? Nasıl Çalışır?

PHP-FPM (FastCGI Process Manager), PHP isteklerini işleyen bağımsız bir süreç yöneticisidir. Nginx veya Apache’nin PHP dosyalarını çalıştırması için PHP-FPM’e istek yönlendirmesi gerekir. Her gelen istek için bir worker (child process) görevlendirilir; bu worker işi bitirene kadar meşguldür.

Temel Hesaplama Formülü

Kullanılabilir RAM   = Toplam RAM - OS RAM
pm.max_children      = Kullanılabilir RAM ÷ Ortalama İşlem Boyutu
pm.start_servers     = max_children × 0.25
pm.min_spare_servers = max_children × 0.15
pm.max_spare_servers = max_children × 0.50
Process Manager Türleri

dynamic — Önerilen

PHP-FPM, min_spare_servers ile max_spare_servers arasında otomatik worker açıp kapatır. Orta-yoğun trafikli siteler için idealdir. Boşta RAM tüketimini minimize eder.

🎯

ondemand — Düşük Trafik

İstek geldiğinde worker açar, işi bitince kapatır. RAM çok kısıtlıysa (512 MB altı) veya trafik çok düşükse tercih edin. İlk istek biraz daha yavaş yanıt alabilir.

🔒

static — Sabit Performans

Her zaman max_children kadar worker açık tutar. En hızlı yanıt süresi sağlar, yeni process fork etmez. Yeterli RAM varsa ve trafik sürekli yoğunsa tercih edilir.

🔄

Değişiklik Sonrası

Ayarları değiştirdikten sonra systemctl reload php8.x-fpm komutunu çalıştırın. reload aktif bağlantıları kesmeden yeniden yükler.

Parametre Referansı
Parametre Açıklama Önerilen
pm.max_children Aynı anda açılabilecek maksimum worker sayısı. RAM / işlem boyutu
pm.start_servers PHP-FPM başladığında açılacak worker sayısı. max × 0.25
pm.min_spare_servers Her zaman boşta bekleyecek minimum worker sayısı. max × 0.15
pm.max_spare_servers Boşta bekleyebilecek maksimum worker sayısı. max × 0.50
pm.max_requests Worker’ın kaç istekten sonra yeniden başlatılacağı. Memory leak önler. 500 – 1000
request_terminate_timeout Maksimum istek süresi. Bu süreyi aşan worker öldürülür. 60s – 300s
pm.process_idle_timeout Sadece ondemand modda: boşta worker’ın kaç saniye sonra kapatılacağı. 10s – 30s
Önemli İpuçları
📊

Gerçek Değeri Ölçün

İşlem boyutu sunucudan sunucuya büyük fark eder. Sayfanın üstündeki komutu çalıştırıp gerçek değeri kullanın. WooCommerce gibi ağır uygulamalar 100 MB+ tüketebilir.

⚠️

max_children Çok Yüksek Olmasın

Tüm worker’lar aynı anda aktif olursa RAM dolup swap’a düşer — bu durum sunucuyu neredeyse kilitler. Değeri biraz düşük tutmak, taşmış bir sunucudan çok daha iyidir.

🔍

Logları İzleyin

/var/log/php-fpm/error.log dosyasında “max_children reached” uyarısı görüyorsanız değerleri artırmanız gerekiyor.

🌐

Birden Fazla Site (Pool)

Her site için ayrı pool açıyorsanız hesaplanan değerleri pool sayısına bölün. Yüksek trafikli siteye daha fazla, düşük trafikli siteye daha az worker ayırın.

💡 Pro İpucu Sunucunuzda MySQL de çalışıyorsa OS RAM rezervini artırın. Örneğin 4 GB RAM’li bir sunucuda MySQL için 512 MB, OS için 256 MB, Nginx için 128 MB ayırdıktan sonra geri kalanı PHP-FPM’e verin.