PHP-FPM Memory Limit Hatası Nedir?
PHP-FPM, PHP uygulamalarınızı daha verimli ve hızlı bir şekilde çalıştırmak için kullanılan bir teknolojidir. Ancak bazen PHP betiklerinizin çalışması sırasında, PHP’nin kullanabileceği bellek miktarını aşmanız mümkündür. Bu, çoğunlukla büyük dosyaların işlenmesi, yoğun veritabanı sorguları veya hatalı bir yapılandırma sonucu meydana gelir. PHP-FPM, bu durumu "memory limit exceeded" (bellek sınırı aşıldı) hatasıyla raporlar.
Bu hata, sitenizin yavaşlamasına veya tamamen çökmesine neden olabilir, çünkü PHP daha fazla bellek kullanmaya çalışırken, sistem kaynaklarınız buna izin vermez.
PHP-FPM Memory Limit Hatasını Çözme
1. PHP Konfigürasyon Dosyasını Düzenleme
İlk adım olarak, PHP’nin bellek limitini artırmayı denemelisiniz. Bunun için PHP’nin konfigürasyon dosyasına erişmeniz gerekiyor. Bu dosya genellikle `/etc/php/7.x/fpm/php.ini` yolu altında bulunur (versiyona bağlı olarak değişebilir). Dosyayı düzenlemek için terminali açın ve aşağıdaki komutu girin:
sudo nano /etc/php/7.x/fpm/php.ini
Daha sonra, `memory_limit` parametresini arayın ve değeri arttırın. Örneğin:
memory_limit = 256M
Burada, bellek limitini 256 MB’ye ayarladık. Ancak, eğer daha fazla bellek gerekiyorsa, bu değeri daha yüksek bir değere çıkarabilirsiniz. Örneğin, `512M` ya da `1024M` gibi.
Değişiklikleri kaydedin ve PHP-FPM servisini yeniden başlatın:
sudo systemctl restart php7.x-fpm
2. Web Sunucusu Yapılandırmalarını Kontrol Edin
PHP-FPM’in yanı sıra, web sunucusunun yapılandırmalarını da kontrol etmeniz gerekebilir. Apache veya Nginx gibi web sunucuları, PHP-FPM ile etkileşimde bulunarak dinamik içerik oluşturur. Apache kullanıyorsanız, `.htaccess` dosyasını kontrol etmelisiniz. Nginx kullanıyorsanız, PHP-FPM ile iletişimde kullanılan ayarlara göz atmalısınız.
Apache için, `.htaccess` dosyasına şu satırı ekleyebilirsiniz:
php_value memory_limit 256M
Bu, PHP-FPM’in bellek kullanımını web sunucusu seviyesinde sınırlandırır.
3. PHP-FPM Pool Konfigürasyonunu Düzenleyin
PHP-FPM, genellikle her web sitesi için farklı bir "pool" (havuz) yapılandırması kullanır. Bu pool'lar, PHP işlemlerinin nasıl yönetileceğini belirler. Her pool için `pm.max_children` ve `memory_limit` gibi parametreler ayarlanabilir. Bu ayarları, her web sitesinin farklı bellek ihtiyaçlarına göre özelleştirebilirsiniz.
PHP-FPM pool konfigürasyon dosyasına şu şekilde erişebilirsiniz:
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
Bu dosyada, `memory_limit` parametresini değiştirerek her pool için bellek limitini özelleştirebilirsiniz. Ayrıca, `pm.max_children` değerini artırarak aynı anda çalışan PHP işlem sayısını artırabilirsiniz.
4. Sistem Bellek Kullanımını İzleyin
PHP-FPM’in bellek limitini artırmak, sorunuzu geçici olarak çözebilir. Ancak, uzun vadeli bir çözüm için sisteminizin genel bellek kullanımını izlemek önemlidir. Özellikle sunucunuzda başka hizmetler de çalışıyorsa, bu hizmetlerin belleği nasıl kullandığını gözlemleyerek, herhangi bir bellek sızıntısı veya aşırı bellek kullanımı olup olmadığını anlayabilirsiniz.
Bunun için, `top` veya `htop` gibi araçları kullanarak sistemin bellek kullanımını takip edebilirsiniz:
top
Bu araçlar, bellek tüketen işlemleri listeleyerek size daha fazla bilgi sağlar.
5. PHP-FPM Loglarını Kontrol Edin
Son olarak, PHP-FPM loglarını kontrol etmek her zaman iyi bir fikirdir. Log dosyaları, hataların nedenini belirlemenize yardımcı olabilir. PHP-FPM loglarını şu komutla görüntüleyebilirsiniz:
sudo tail -f /var/log/php7.x-fpm.log
Bu log dosyasında, bellek hatası ile ilgili daha fazla detay bulabilirsiniz. Hata mesajları bazen, sorunun çözülmesine yardımcı olacak ipuçları verebilir.
Sonuç
PHP-FPM memory limit hatası, web siteniz için ciddi bir performans sorunu yaratabilir. Ancak, bu sorunu çözmek için yukarıdaki adımları izleyerek kolayca çözebilirsiniz. PHP konfigürasyonlarını ve PHP-FPM pool yapılandırmalarını değiştirerek, bellek kullanımını optimize edebilir ve sisteminizin daha stabil çalışmasını sağlayabilirsiniz.
Unutmayın, her zaman sisteminizin kaynaklarını izleyin ve bellek kullanımını gerektiği şekilde yapılandırın. Böylece, PHP-FPM'in çalışma verimliliğini artırarak, web sitenizin sorunsuz çalışmasını sağlarsınız.