Plesk Panel’de Domain Bazlı PHP-FPM Kaynak Ayarları

Bir sunucu üzerinde çok sayıda web sitesi çalışıyorsa, her sitenin PHP yoğunluğu birbirinden farklı olacaktır. Trafiği fazla siteler daha çok worker isterken, küçük tanıtım siteleri düşük kaynakla da stabil şekilde çalışır. PHP-FPM her domain için ayrı bir havuz oluşturduğu için bu limitlerin domain bazında ayarlanması performansı doğrudan etkiler.
Aynı sunucuda trafiği tamamen farklı seviyelerde olan siteler yer alabilir. Örneğin bir e-ticaret sitesi saniye başına onlarca isteği işlerken blog siteleri çok daha hafif yük üretir. Tüm bu sitelere aynı pm.max_children veya memory limitini verdiğinizde bazıları gereksiz RAM tüketirken bazıları yoğunlukta 503-504 hataları üretebilir.

Plesk Panelde PHP-FPM Modu Nasıl Doğrulanır?

Ayarları yapmadan önce domainin PHP-FPM modunda çalıştığını doğrulayalım. Bunun için Plesk panelindeki Tools & Settings → PHP Settings alanından aktif PHP handler bilgisini inceleyebilirsiniz. Sonrasında ayar uygulayacağınız domaine girelim.

Domains → Domain → PHP Settings adımlarını izleyin. Run PHP as kısmı FPM değilse modu FPM application served by Apache/Nginx olarak değiştirmek, domain için FPM havuzunu aktif hâle getirir.

Aktif PHP-FPM servislerini listeleyelim

systemctl | grep fpm

Plesk üzerindeki FPM havuzlarını doğrulayalım

plesk bin php_handler --list | grep fpm

Belirli bir PHP-FPM servisinin durumunu kontrol edelim

systemctl status plesk-php80-fpm.service

Domain Bazlı PHP-FPM Limit Alanları

Domain için PHP-FPM ayarlarının yer aldığı kısımda ihtiyacımız olan tüm parametreler görünür.

Plesk Panel Üzerinden Alan Adı Özelinde PHP-FPM Limitleri

FPM ayarlarının bulunduğu alt bölüme geçelim. Burada “pm” modunu seçelim. Dynamic veya ondemand arasında seçim yaparak siteye uygun bir yapı belirleyebiliriz. Daha sonra pm.max_children değerini sitenin ihtiyacına göre düzenleyelim.

Dynamic mod seçiliyse start_servers, min_spare_servers ve max_spare_servers değerlerini de trafiğe uygun şekilde güncelleyebiliriz.

PHP’nin domain bazlı sınırları olan memory_limit, max_execution_time ve max_input_time değerlerini düzenledikten sonra ayarları kaydedelim.

Bazı Plesk sürümlerinde değişiklikler anında aktif olur. Bazı durumlarda ilgili PHP-FPM servisinin yeniden yüklenmesi gerekebilir. Bu işlem SSH üzerinden yapılabilir. XX yerine site için kullanılan PHP sürümü yazılır.

service plesk-phpXX-fpm restart

İzleme ve Hata Ayıklama

Yapılandırmanın doğru çalışıp çalışmadığını anlamak için ilgili domainin log dosyalarını inceleyelim.

/var/www/vhosts/system/domain/logs/

FPM’e bağlı hataları izlemek için PHP sürümüne göre log dizinini kontrol edelim.

/var/log/plesk-phpXX-fpm/

Loglarda Görülen Uyarılar ve Hatalar Ne Anlama Geliyor?

Loglarda görülen bazı mesajlar mevcut ayarların yetersiz veya gereğinden fazla olduğunu gösterebilir:

  • 503 Service Unavailable
    PHP-FPM taleplere zamanında cevap veremiyor olabilir.
Error 503 Service Unavailable Hatası ve Çözümü – Yazılım Mimarileri ve  Tasarım Desenleri Üzerine
  • upstream closed connection
    PHP süreçleri bağlantıyı zamanında tamamlayamıyor; yetersiz worker olabilir.
  • server reached pm.max_children
    Mevcut süreç sayısı maksimuma ulaşmış; pm.max_children düşük kalmış olabilir.

Sık Sorulan Sorular

503 hataları hep aynı dakikalarda ortaya çıkıyorsa sebep ne olabilir?

Bu durum çoğunlukla cron job, yedekleme işleri veya belirli aralıklarla çalışan API işlemleri gibi periyodik yük artışlarından kaynaklanır. Bu yüklenme anlarında pm.max_children değeri tıkanır ve 503 hatası görünür.

<code>server reached pm.max_children setting</code>

Bu senaryoda domain için tanımlanan max_children değerini bir miktar artırmak veya cron zamanlamasını daha sakin bir saate kaydırmak sorunu çözer.

Nginx reverse proxy kullanılan sitelerde FPM limitleri neden daha kritik?

pm.max_children değeri düşük kaldığında PHP tarafı sıkışır ve Nginx upstream katmanında hata üretir.

<code>upstream prematurely closed connection while reading response header</code>

Bu hata görüldüğünde ilk kontrol edilmesi gereken domainin FPM limitleridir. Ardından Nginx’in timeout değerleri gözden geçirilmelidir.

PHP-FPM havuzunun domain bazında aktif olmadığını nasıl anlarım?

/etc/php-fpm.d/ ya da /opt/plesk/php/*/etc/php-fpm.d/ dizinlerinde domain adına ait bir .conf dosyasının oluşup oluşmadığını kontrol ederek FPM havuzunun gerçekten açıldığını doğrulayabilirsiniz.

Yorum yapın