PHP-FPM Memory Limit Hatası ve Çözümü: Linux Sunucusunda Sorunu Çözme Rehberi

PHP-FPM memory limit hatası, yüksek bellek tüketimi nedeniyle PHP uygulamalarında karşılaşılan bir sorundur. Bu rehber, bu hatayı çözmek için Linux üzerinde yapılması gereken temel ayarlamaları detaylıca açıklamaktadır.

BFS

Bir sabah, işler yoğunlaştığında, PHP-FPM (FastCGI Process Manager) ve web sunucusunun performansı ile ilgili bir sorunla karşılaştınız. Hatalar ekranınızda belirginleşmeye başladı: *"Allowed memory size of XXXX bytes exhausted"* ve işler bir anda durdu. Ama ne oldu? Hangi ayarlamalar eksikti? Ve PHP-FPM memory limit hatasını nasıl düzeltebilirsiniz? İşte tüm bu soruları yanıtlayarak, PHP-FPM’in memory limit hatasını çözme adımlarını detaylıca anlatacağım.

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.

İlgili Yazılar

Benzer konularda diğer yazılarımız

OAuth2 Authentication Error: Nedenleri ve Çözümleri

OAuth2 Authentication Error: Gerçekten Neyin Peşindeyiz?Her geliştirici, kimlik doğrulama hatalarıyla bir noktada karşılaşmıştır. Ama bazen işler kontrolden çıkabiliyor. Eğer bir gün OAuth2 ile çalışırken bir kimlik doğrulama hatası aldığınızda, yalnız...

PHP Undefined Function Hatası ve Çözümü: Ne Oldu? Ne Yapmalısınız?

PHP'de program yazarken, karşınıza çıkan hatalardan biri de "Undefined Function" hatasıdır. Bu hata, çoğu zaman deneyimsiz geliştiricilerin canını sıkabilir. Peki, nedir bu "Undefined Function" hatası ve nasıl çözülür? İşte bu yazıda, bu hatanın ne olduğunu,...

PHP "Warning: Division by zero" Hatası: Sorun, Çözüm ve Dikkat Edilmesi Gerekenler

PHP dünyasında, programcıların karşılaştığı en yaygın hatalardan biri olan "Warning: Division by zero" hatasını ele alıyoruz. Bu hata, küçük bir bölücü hatasından dolayı uygulamanızın çalışmasını engelleyebilir. Hadi, bu hatayı daha yakından inceleyelim...