VDS'de PHP-FPM Havuz (Pool) Ayarları ile RAM Tüketimini Optimize Etme

VDS sunucunuzda PHP uygulamaları çalıştırıyorsanız, RAM tüketimini kontrol altında tutmak kritik bir konudur. Özellikle trafik arttıkça, PHP-FPM havuz (pool) ayarları yanlış yapılandırıldığında sunucunuz kısa sürede kaynakları tüketebilir. Bu yazıda, PHP-FPM havuz ayarlarını nasıl optimize edeceğinizi ve RAM tüketimini nasıl dengeleyeceğinizi adım adım anlatacağız.

PHP-FPM Nedir ve Neden Önemlidir?

PHP-FPM (FastCGI Process Manager), PHP betiklerini çalıştırmak için kullanılan bir işlem yöneticisidir. Her bir PHP isteği için ayrı bir işlem oluşturur. Bu işlemlerin sayısı ve davranışı, sunucunuzun ne kadar RAM kullanacağını doğrudan etkiler. Doğru ayarlanmış bir PHP-FPM konfigürasyonu, aynı anda daha fazla kullanıcıya hizmet vermenizi sağlarken, hatalı ayarlar sunucunuzun çökmesine bile yol açabilir.

Temel Havuz Ayarları

PHP-FPM havuz ayarları, genellikle /etc/php/8.x/fpm/pool.d/ altındaki www.conf dosyasında bulunur. İşte en kritik parametreler:

pm (Process Manager)

Bu parametre, işlem yönetim modunu belirler. Üç seçenek vardır: static, dynamic ve ondemand. VDS sunucularında genellikle dynamic veya ondemand tercih edilir. pm = dynamic ile minimum ve maksimum işlem sayısını belirleyerek RAM kullanımını dengeleyebilirsiniz.

pm.max_children

Bu değer, aynı anda çalışabilecek maksimum alt işlem sayısını belirler. Her bir PHP işlemi ortalama 20-40 MB RAM tüketir. Örneğin, 2 GB RAM'iniz varsa ve her işlem 30 MB harcıyorsa, pm.max_children = 50 güvenli bir başlangıçtır. Ancak diğer hizmetlerin de RAM kullandığını unutmayın.

pm.start_servers, pm.min_spare_servers, pm.max_spare_servers

Dynamic modda, bu üç değer işlem sayısını dinamik olarak ayarlar. pm.start_servers = 5 başlangıçtaki işlem sayısını, pm.min_spare_servers = 5 boşta bekleyen minimum işlem sayısını, pm.max_spare_servers = 20 ise maksimum boş işlem sayısını belirtir. Düşük trafikli siteler için bu değerleri küçük tutmak RAM tasarrufu sağlar.

pm.max_requests

Bu parametre, bir işlemin kaç istekten sonra yeniden başlatılacağını belirler. Uzun süre çalışan PHP işlemleri bellek sızıntısına yol açabilir. Bu nedenle pm.max_requests = 500 gibi bir değer vermek iyi bir uygulamadır.

Örnek Bir Yapılandırma

Diyelim ki 4 GB RAM'e sahip bir VDS kullanıyorsunuz ve orta düzeyde trafiğiniz var. İdeal bir başlangıç noktası şöyle olabilir:

  • pm = dynamic
  • pm.max_children = 80
  • pm.start_servers = 8
  • pm.min_spare_servers = 4
  • pm.max_spare_servers = 20
  • pm.max_requests = 500

Bu ayarları uyguladıktan sonra sudo systemctl restart php8.x-fpm ile hizmeti yeniden başlatmayı unutmayın. Ardından htop veya ps -aux komutlarıyla RAM kullanımını kontrol edin.

İpucu: Web sitenizde ani trafik artışları oluyorsa, ondemand modunu deneyebilirsiniz. Bu modda işlemler yalnızca ihtiyaç duyulduğunda oluşturulur ve işlem bittiğinde kapatılır. Bu sayede boşta bekleyen işlemler RAM tüketmez.

RAM Kullanımını İzleme

Ayarları değiştirdikten sonra, sunucunuzdaki PHP işlemlerinin RAM tüketimini düzenli olarak izleyin. Bunun için top, htop veya ps komutlarını kullanabilirsiniz. Ayrıca New Relic ya da Prometheus gibi araçlarla daha detaylı analiz yapabilirsiniz. Unutmayın, her web sitesinin ihtiyacı farklıdır; test ederek en uygun değerleri bulun.

PHP-FPM havuz ayarlarını optimize etmek, VDS sunucunuzun performansını artırmak ve RAM tüketimini kontrol altına almak için en etkili yöntemlerden biridir. Doğru yapılandırma ile hem kullanıcı deneyimini iyileştirebilir hem de sunucu maliyetlerinizi düşürebilirsiniz. Denemekten çekinmeyin ve her zaman ayarları yedekleyin.

← Tüm yazılar