Blogchevron_rightSunucu Yönetimichevron_rightPHP-FPM Yapılandırma ve Performans Rehberi

PHP-FPM Yapılandırma ve Performans Rehberi

S
Serversium
calendar_today11 Mayıs 2026
schedule5 dk okuma
PHP-FPM Yapılandırma ve Performans Rehberi

PHP-FPM Nedir ve Neden Önemlidir?

PHP-FPM (FastCGI Process Manager), modern web sunucularının en kritik bileşenlerinden biridir. Apache veya Nginx gibi web sunucuları ile PHP arasında köprü görevi gören PHP-FPM, dinamik içeriklerin işlenmesini sağlar. Web sitesi performansı açısından doğru yapılandırılmış bir PHP-FPM ortamı, sunucu yanıt sürelerini %60'a varan oranlarda iyileştirebilir.

Yanlış PHP-FPM ayarları, aşırı bellek tüketimi, yavaş sayfa yüklemeleri ve sunucu çökmelerine yol açabilir. Özellikle yüksek trafikli projelerde, kaynakların verimli kullanılması hem maliyet hem de performans açısından kritik önem taşır.

PHP-FPM Mimari Temelleri

Process Manager (PM) Türleri

PHP-FPM'de üç farklı process manager tipi bulunur ve her biri farklı kullanım senaryoları için optimize edilmiştir:

PM TürüAvantajlarDezavantajlarIdeal Kullanım
staticÖngörülebilir kaynak kullanımı, en yüksek performansEsneklik eksikliği, düşük trafikte kaynak israfıYüksek trafikli, stabil projeler
dynamicEsnek kaynak yönetimi, düşük bellek tüketimiİlk isteklerde gecikme, karmaşık yapılandırmaOrta seviye trafik, değişken yüklü siteler
ondemandMinimum bellek kullanımı, kaynak tasarrufuİlk isteklerde yavaşlama, soğuk başlangıçDüşük trafikli projeler, development ortamları

pm.max_children: Kritik Parametre

Bu parametre, PHP-FPM'nin aynı anda oluşturabileceği maksimum child process sayısını belirler. Hesaplama formülü şu şekildedir:

pm.max_children = Toplam Bellek / Her bir PHP-FPM prosesinin bellek tüketimi

Ortalama bir PHP-FPM prosesi 30-50 MB bellek tüketir. 4GB RAM'e sahip bir sunucu için önerilen değer:

pm.max_children = 4096 MB / 40 MB ≈ 100

Temel PHP-FPM Yapılandırma Parametreleri

pm.max_requests Ayarları

Her child process'in yeniden başlatılmasından önce işleyeceği maksimum istek sayısını belirler. Bu değer, bellek sızıntılarının önlenmesi için kritiktir:

  • Düşük trafikli siteler: 50-100
  • Orta trafikli siteler: 200-500
  • Yüksek trafikli siteler: 500-1000

Bu parametrenin doğru ayarlanması, uzun süre çalışan processlerde biriken bellek sızıntılarının önüne geçer ve sunucu hatalarının çözümüne katkı sağlar.

request_terminate_timeout

Bir isteğin maksimum yürütülme süresini belirler. Uzun süren scriptlerin sunucuyu bloke etmesini önlemek için kritik bir ayardır:

[www]
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/slow.log

Bu ayar, özellikle veritabanı sorgularının veya harici API çağrılarının zaman aşımına uğraması durumunda sunucunun responsive kalmasını sağlar.

İşlemci Kaynaklarını Verimli Kullanma Stratejileri

1. Emergency Restart Ayarları

Sunucu aşırı yüklendiğinde otomatik müdahale için emergency restart mekanizmasını yapılandırın:

[www]
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500

2. OPcache Yapılandırması

PHP kodunun derlenmiş halini önbelleğe almak, işlemci yükünü önemli ölçüde azaltır:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 ; Production için
opcache.revalidate_freq=2

OPcache, aynı PHP dosyalarının her istek için yeniden derlenmesini engelleyerek web sitesi hızını artırır.

3. Realpath Cache Optimizasyonu

Dosya yollarının önbelleğe alınması, I/O işlemlerini azaltır:

realpath_cache_size=4096K
realpath_cache_ttl=600

Sunucu Kaynaklarına Göre PHP-FPM Ayarları

Küçük Sunucular (1-2 GB RAM)

[www]
pm = ondemand
pm.max_children = 20
pm.process_idle_timeout = 10s
pm.max_requests = 200

Orta Ölçekli Sunucular (4-8 GB RAM)

[www]
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

Yüksek Performanslı Sunucular (16+ GB RAM)

[www]
pm = static
pm.max_children = 150
pm.max_requests = 1000
request_terminate_timeout = 60

Performans İzleme ve Optimizasyon

PHP-FPM Status Sayfası

Performansı izlemek için PHP-FPM status sayfasını etkinleştirin:

[www]
pm.status_path = /status
ping.path = /ping
ping.response = pong

Bu sayfaya erişim için Nginx yapılandırması:

location ~ ^/(status|ping)$ {
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.0/24;
    deny all;
    fastcgi_pass unix:/var/run/php-fpm/www.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Benchmark Testleri

Yapılandırma değişikliklerini test etmek için Apache Benchmark (ab) veya wrk kullanın:

ab -n 1000 -c 100 http://your-site.com/

Bu komut 1000 isteği 100 eşzamanlı bağlantı ile test eder. Ortalama yanıt süresi 200ms'nin altında olmalıdır.

Yaygın Hatalar ve Çözümleri

Hata 1: Aşırı pm.max_children Değeri

Çok yüksek değerler, sunucunun bellek tüketimini artırır ve swap kullanımına yol açar. Çözüm: Bellek kullanımını izleyerek optimal değeri bulun.

Hata 2: Ondemand Modunda Yavaş İlk İstek

Ondemand modunda idle process bulunmadığından ilk istekte process oluşturulması gerekir. Çözüm: Hosting altyapısı için dynamic modu tercih edin veya start_servers değerini ayarlayın.

Hata 3: Yetersiz max_requests

Düşük değerler, process yeniden başlatma overhead'ını artırır. Yüksek değerler ise bellek sızıntılarına yol açar. Çözüm: Uygulamanızın bellek kullanım profiline göre 200-500 arası değer deneyin.

Güvenlik Yapılandırması

PHP-FPM güvenliğini artırmak için aşağıdaki ayarları uygulayın:

[www]
user = nginx
group = nginx
listen = /var/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 128M
php_admin_value[upload_max_filesize] = 20M
php_admin_value[post_max_size] = 25M

Bu yapılandırma, PHP processlerinin yalnızca gerekli kaynaklara erişmesini sağlar ve web uygulama güvenliğine katkıda bulunur.

Sonuç ve En İyi Uygulamalar

PHP-FPM optimizasyonu, web uygulamalarının performansını doğrudan etkileyen kritik bir süreçtir. İşte özet talimatlar:

  1. Sunucu kaynaklarınızı analiz edin: Toplam RAM ve CPU kapasitesini belirleyin
  2. PM türünü seçin: Trafik profilinize göre static, dynamic veya ondemand seçin
  3. pm.max_children hesaplayın: Bellek / proses boyutu formülünü uygulayın
  4. OPcache'i etkinleştirin: Derleme süresini minimize edin
  5. İzleme sistemi kurun: Status sayfası ve loglarla performansı takip edin
  6. Düzenli test yapın: Benchmark testleri ile yapılandırmanın etkinliğini ölçün

Doğru PHP-FPM ayarları, sunucu maliyetlerini düşürürken kullanıcı deneyimini iyileştirir. Unutmayın: her uygulama farklıdır ve en iyi yapılandırma, sürekli izleme ve optimizasyon ile elde edilir.

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward