PHP-FPM Memory Limit Hatası Nedir?
Bir gün, PHP ile geliştirilmiş bir web uygulamanız var ve her şey harika giderken bir anda sayfalarınız yavaşlamaya başlıyor. Artık gelen her isteğe karşılık, siteye giriş yapmayı başaramıyorsunuz. Bir hata mesajı beliriyor: *"Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)"*. İşte, bu PHP-FPM Memory Limit hatasıdır!
PHP-FPM, PHP uygulamaları için kullanılan bir FastCGI Process Manager’dır ve genellikle daha yüksek performans sağlar. Ancak, her şey gibi, bu sistem de bazen limitsiz değil. Sunucunuzda çalışacak PHP kodu belirli bir bellek limiti ile sınırlandırılmıştır. Bu limitin aşılması sonucu PHP-FPM, çalışan işlemleri sonlandırır ve hata verir.
PHP-FPM Memory Limit Hatası Neden Olur?
PHP-FPM memory limit hatasının başlıca sebepleri şunlardır:
- Kod Hataları: Kodun içinde bellek sızıntısı yapan işlemler.
- Ağır Veritabanı Sorguları: Büyük veri setleri veya karmaşık sorgular sunucunun belleğini zorlayabilir.
- Büyük Dosya Yüklemeleri: PHP scriptleri büyük dosyalar yüklemeye çalıştığında bellek kullanımı hızla artabilir.
- Yetersiz PHP Konfigürasyonu: PHP-FPM’ın bellek kullanım limitleri, varsayılan ayarlarla yeterli olmayabilir.
PHP-FPM Memory Limit Hatasını Çözmek İçin Adımlar
Eğer bu hatayı alıyorsanız, yapmanız gereken bazı işlemler var. Hadi, adım adım bu sorunu nasıl çözebileceğimizi inceleyelim.
1. PHP-FPM ve PHP Konfigürasyon Dosyasını Düzenleme
İlk olarak, PHP konfigürasyon dosyanızı düzenleyin. Bunun için terminalde aşağıdaki komutları kullanabilirsiniz.
sudo nano /etc/php/7.x/fpm/php.ini
Bu dosya, PHP'nin genel ayarlarını içerir. "memory_limit" satırını bulun ve değeri daha yüksek bir değere ayarlayın. Örneğin:
memory_limit = 256M
Bu, PHP'nin her script çalıştırırken kullanabileceği maksimum belleği 256MB olarak ayarlayacaktır. İhtiyacınıza göre bu değeri daha da artırabilirsiniz.
2. PHP-FPM Pool Konfigürasyonunu Düzenleme
PHP-FPM, bellek limitlerini farklı işlem havuzlarında da ayarlayabilir. PHP-FPM pool konfigürasyon dosyasına gidin:
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
Bu dosyada, aşağıdaki gibi değerler bulunabilir:
php_value[memory_limit] = 256M
Bu ayar da PHP-FPM için geçerli olan memory_limit değerini artırır.
3. Web Sunucusunu Yeniden Başlatma
Değişikliklerin etkili olabilmesi için PHP-FPM ve web sunucunuzu yeniden başlatmalısınız. Bunun için aşağıdaki komutları kullanabilirsiniz:
sudo systemctl restart php7.x-fpm
sudo systemctl restart nginx
Ya da Apache kullanıyorsanız:
sudo systemctl restart apache2
4. Veritabanı Optimizasyonu
PHP-FPM’ın bellek limitlerini artırmak sorununuzu çözse de, eğer uygulamanız büyük veritabanı sorguları yapıyorsa bu hatayı sıkça alabilirsiniz. Veritabanı sorgularınızı optimize etmek, bellek kullanımını azaltır ve performansı artırır.
5. Gelişmiş Bellek İzleme ve Profiling
Eğer uygulamanız hala bellek limit hatası veriyorsa, PHP kodunuzu profil çıkartarak hangi işlemlerin fazla bellek kullandığını tespit etmeniz gerekebilir. Xdebug gibi araçlar ile bellek kullanımını takip edebilir ve sorunlu kodu belirleyebilirsiniz.
Sonuç
PHP-FPM memory limit hatası genellikle doğru yapılandırma ve sunucu kaynaklarının verimli kullanımı ile çözülebilir. Yukarıda paylaştığım adımlar, sunucunuzda PHP uygulamanızın daha verimli çalışmasını sağlayacaktır. Unutmayın, bellek limitini artırmak geçici bir çözüm olabilir, ancak uzun vadede daha sağlam bir yapı için kod optimizasyonu yapmak çok daha etkili olacaktır.