29 Ekim 2026 - 01:34
PHP Allowed Memory Size Exhausted Hatasında Belleği Teşhis Etme Görseli
PHP

PHP Allowed Memory Size Exhausted Hatasında Belleği Teşhis Etme

0 Yorumlar

Allowed memory size exhausted hatası, bir PHP isteğinin kendisi için tanımlı bellek sınırını aştığını bildirir. Bu mesaj tek başına sunucuda RAM kalmadığını kanıtlamaz. Web isteği, komut satırı işi ve kuyruk çalışanı farklı PHP yapılandırmalarıyla çalışabilir; önce hangi sürecin, hangi veri büyüklüğünde ve hangi ortamda sınırı aştığını bulun.

Limit ile tepe kullanımı aynı bağlamda ölçün

Geliştirme veya kontrollü test ortamında ini_get('memory_limit') ile etkin sınırı kaydedebilir, işin sonuna yakın memory_get_peak_usage(true) değerini ölçebilirsiniz. İkinci parametre true olduğunda PHP ayırdığı belleği, daha küçük değer ise kullanılan belleği raporlar. Ölçümü hata oluşmadan önceki aşamalara da koymak, artışın hangi işlemden sonra başladığını gösterir.

GENEL
error_log('memory_limit=' . ini_get('memory_limit'));
error_log('peak_bytes=' . memory_get_peak_usage(true));

Ölçüm kodunu geçici olarak ekleyin ve günlükte tutun; herkese açık sayfada kaynak bilgisi göstermeyin. Aynı isteğin birden fazla aşamasında ölçüm almak istiyorsanız kayıtları işlem adımıyla etiketleyin. PHP belgesi, bellek tepe kullanımının nasıl okunduğunu açıklar.

Tekrarlayan büyük veriyi arayın

Veritabanından tüm satırları tek seferde belleğe almak, büyük görselleri dönüştürmek veya her iterasyonda yeni bir kopya oluşturmak tepe kullanımı büyütebilir. fetchAll() yerine uygun olduğunda satırları parça parça işlemek, büyük dosyayı belleğe tamamen almak yerine akışla okumak ve artık kullanılmayan referansları bırakmak daha kalıcı çözümlerdir. Döngü içinde biriktirilen verinin gerçekten gerekli olup olmadığını da kontrol edin.

Bir veri kümesini parçalara bölerken sayfa numarasıyla offset kullanımı büyüyen tablolarda pahalı olabilir; uygun indeks varsa artan kimlik ya da cursor tabanlı ilerleme değerlendirilir. Uygulamanın eşzamanlı istek sayısını ve işin çalışma süresini de hesaba katın. Tek isteğin kullandığı bellek küçük görünse bile çok sayıda paralel istek toplam RAM'i zorlayabilir.

Limit artırımı ancak ölçümden sonra

memory_limit değerini yükseltmek gerçek bir gereksinim için kabul edilebilir; fakat bir döngü hatasını, yanlış sorguyu veya kontrolsüz dosya yüklemeyi çözmez. Sınırsız değere geçmek de paylaşımlı ortamda diğer süreçlerin kaynaklarını riske atabilir. Komut satırında gördüğünüz limit ile PHP-FPM veya Apache isteğinin limitinin aynı olduğunu varsaymayın; PHP ayar dosyası ve SAPI farklı olabilir. Linux tarafında RAM kullanımını araştırırken yüksek RAM kullanımı ve süreç teşhisi yazısındaki işletim sistemi kontrollerini PHP ölçümlerinden ayrı değerlendirin.

Yönergenin kapsamı ve varsayılanı için PHP'nin çekirdek yapılandırma yönergeleri belgesini esas alın; değişiklik sonrası gerçek isteğin çalıştığı SAPI üzerinden değeri yeniden doğrulayın.

Benzer Yazılar

Yorumlar (0)

Henüz yorum yok. İlk yorum yapan sen ol!

Yorum Yap