Ubuntu’da PHP-FPM Optimizasyonu

Ubuntu sunucularında PHP uygulamalarını yüksek performansla çalıştırmak için PHP-FPM (FastCGI Process Manager) optimizasyonu kritik bir adımdır.

Reklam Alanı

Ubuntu sunucularında PHP uygulamalarını yüksek performansla çalıştırmak için PHP-FPM (FastCGI Process Manager) optimizasyonu kritik bir adımdır. PHP-FPM, Apache veya Nginx gibi web sunucularıyla entegre olarak PHP kodlarını verimli bir şekilde işler ve kaynak kullanımını optimize eder. Özellikle yüksek trafikli web siteleri, API servisleri veya dinamik içerik üreten platformlar için doğru yapılandırma, yanıt sürelerini kısaltır, bellek tüketimini dengeler ve sunucu stabilitesini artırır. Bu makalede, Ubuntu ortamında PHP-FPM’i adım adım optimize etme yöntemlerini ele alacağız. Başlangıçtan ileri seviye ayarlara kadar pratik rehberlik sunarak, sistem yöneticilerinin kendi ortamlarına uyarlayabileceği somut talimatlar vereceğiz. Optimizasyon süreci, sunucu kaynaklarını (CPU, RAM) analiz ederek başlar ve testlerle doğrulanır.

PHP-FPM Pool Yapılandırmasını Optimize Etme

PHP-FPM’in temel yapılandırması, pool dosyalarında gerçekleştirilir. Ubuntu’da varsayılan pool dosyası genellikle /etc/php/8.1/fpm/pool.d/www.conf konumundadır (PHP sürümüne göre değişebilir). Bu dosyayı düzenleyerek process manager (pm) modunu belirleyin. Static mod, sabit sayıda worker process tutar ve yüksek yük altında tutarlı performans sağlar; dynamic mod ise talebe göre ölçeklenir; ondemand mod ise kaynak tasarrufu için uygundur. Öncelikle sunucunuzun RAM miktarını hesaplayın: örneğin 4 GB RAM için pm.max_children değerini 20-30 arası tutun (her process yaklaşık 20-50 MB bellek kullanır).

  1. Sudo yetkisiyle dosyayı açın: sudo nano /etc/php/8.1/fpm/pool.d/www.conf.
  2. pm = dynamic veya pm = static olarak ayarlayın.
  3. Değişiklikleri kaydedip PHP-FPM’i yeniden başlatın: sudo systemctl restart php8.1-fpm.

Bu ayarlar, boşta kalan process’leri yöneterek CPU yükünü %20-30 oranında azaltabilir. Pool başına kullanıcı ve grup tanımlayarak izolasyon sağlayın: user = www-data ve group = www-data. Ayrıca, listen = /run/php/php8.1-fpm.sock ile Unix socket kullanmak TCP’ye göre daha hızlıdır.

Anahtar Performans Parametrelerini İnce Ayar Yapma

pm.max_children ve pm.start_servers Ayarları

pm.max_children, eşzamanlı PHP isteklerini sınırlayan en kritik parametredir. Sunucu RAM’inin %70’ini aşmamak için hesaplayın: RAM (MB) / process boyutu (örneğin 50 MB) = max_children. 8 GB RAM’li bir sunucuda 100 değeri uygundur. pm.start_servers, sunucu başlangıcındaki process sayısını belirler; trafiğe göre 5-10 arası tutun. pm.min_spare_servers ve pm.max_spare_servers ile spare process’leri 5-20 arasında dengelleyin. Bu ayarlar, ani trafik artışlarında gecikmeyi önler ve kaynak israfını engeller.

pm.max_requests ve Zaman Aşımı Parametreleri

pm.max_requests, bir process’in işleyebileceği maksimum istek sayısını tanımlar (varsayılan 0 sonsuzdur); 500-1000 yaparak memory leak’leri önleyin. request_terminate_timeout ile her istek için saniye cinsinden sınır koyun (30-60 sn). Bu, uzun süren sorguları keserek sunucuyu korur. Yapılandırma sonrası sudo systemctl reload php8.1-fpm ile uygulamadan test edin. Nginx kullanıyorsanız, fastcgi_buffers ve fastcgi_buffer_size’i 8k/16k olarak artırın ki tamponlama optimize olsun.

Optimizasyon Sonuçlarını İzleme ve Doğrulama

Değişiklikleri uygulamadan sonra izleme araçlarıyla doğrulayın. PHP-FPM status sayfasını etkinleştirin: pool dosyasına pm.status_path = /status ekleyin ve Nginx’te konum tanımlayın. Tarayıcıdan erişerek active process, queued requests gibi metrikleri takip edin. htop veya top ile process kullanımını gözlemleyin; uptime yüksekse başarılıdır.

Sistem Loglarını Analiz Etme

/var/log/php8.1-fpm.log dosyasını inceleyin: tail -f /var/log/php8.1-fpm.log. “pool www overloaded” hataları max_children’ı artıracağınızı gösterir. slowlog seviyesini etkinleştirin: slowlog = /var/log/php8.1-fpm-slow.log ve request_slowlog_timeout=10s yaparak yavaş istekleri yakalayın. Bu verilerle parametreleri iteratif olarak ayarlayın.

Araçlarla Performans Testi

Apache Benchmark (ab) veya Siege ile yük testi yapın: ab -n 1000 -c 50 http://localhost/test.php. Yanıt süresi <200ms ve hata oranı %0 hedefleyin. New Relic veya Prometheus gibi araçlar entegre edilebilir, ancak temel olarak free -h ve vmstat ile sistem kaynaklarını izleyin. Düzenli bakım için cron job ile log rotasyonu kurun.

Ubuntu’da PHP-FPM optimizasyonu, sisteminize özgü ince ayarlarla tamamlanır. Bu adımları uygulayarak web uygulamanızın hızını iki katına çıkarabilir, kaynak verimliliğini maksimize edebilirsiniz. Sürekli izleme ve trafik paternlerine göre ayarlamalar yaparak uzun vadeli performans kazanın. Profesyonel bir yaklaşımla yönetildiğinde, PHP-FPM sunucunuzun temel taşı haline gelir.

Kategori: Genel
Yazar: Meka
İçerik: 536 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 26-02-2026
Güncelleme: 26-02-2026