VDS Sunucunuzun veya Cpanel arayüzünüzün kaynak limitleri panelinde (Resource Usage) "Memory (RAM) Limit" değerinin sürekli %100'e dayandığını görüyorsunuz ve siteleriniz sık sık "503 "Service Unavailable" veya "508 Resource Limit Is Reached" hatası mı veriyor? İşlemci dursa da RAM neden tek başına çıldırır?
Kısaca: Sunucu RAM'i Neyi Tutar?
RAM, sitenizin dosyalarının (Resim, kod vb) Hard Diskten okunup, ziyaretçinin anlık işlemi bitene kadar o verilerin saniyelik "geçici olarak" dondurulduğu hızlı hafızadır.
Siz 16 GB veya 8 GB bir VDS'e geçseniz bile, arka planda RAM'i adeta musluk açık kalmışçasına sömüren kronik (sınırsız) harcamalar yapan yazılımlar sorunu çözmenize engel olur.
Yüksek RAM Tüketiminin 5 Temel Nedeni
-
WordPress Eklenti Çöplüğü & Bellek Sızıntısı (Memory Leak):
Web sitenizde her bir eklentinin (Örn: WooCommerce, SEO eklentileri) ana sayfaya giren 1 kişi için PHP üzerinde ortalama 5-10 MB harcama yapar. Kötü kodlanmış, RAM'i doldurup "ürettiği çöpü temizlemeyen (Garbage Collection eksikliği)" bir eklentiniz varsa, sitenizde 30 kişi dolaştığında sunucudan aniden 2 GB RAM emilir! -
PHP-FPM "Max Children" Uçurumu:
Sürekli ayarlarından bahsettiğimiz PHP-FPM havuzunda, "Aynı anda 500 PHP işlemine izin ver" (pm.max_children = 500) yazmışsanız; her bir süreç (process) 50 MB RAM yediğinde, sistem aniden 25.000 MB (25 GB) talep eder. Haliyle "Out of Memory (OOM Killer)" süreci devreye girer ve servisi çöktürür. -
MySQL (InnoDB Buffer Pool) Oburluğu:
Veritabanı sunucuları diskten kurtulmak için verileri (tabloları) RAM'de saklamak ister (InnoDB Buffer Pool). Eğer veritabanınız 4 GB ise MySQL sunucunun 4 GB RAM'inin tamamını kendine rezerve edip diğer yazılımları boğabilir. Bazen bu kasıtlı yapılan iyi bir şeydir ama ayarlanamazsa krize sebep olur. -
Hacimli Veri Çekimleri (Export/Import Yükleri):
"E-Ticaret XML ile toplu ürün çekme" işlemi yapılırken PHP tarafımemory_limit = -1(Sınırsız) olarak ayarlandıysa, o XML dosyasının tüm parse işlemi RAM'de olur ve devasa tüketim oluşur. -
Apache Keep-Alive Limitleri:
Apache sunucusu bağlanan ziyarteççiler gittikten sonra "belki tekrar tıklarlar" diye TCP bağlantısını belli bir saniye açık tutar (Keep-Alive). Bu saniyeyi 15-20 sn (Aşırı yüksek) ayarlarsanız, çıkan müşteri bile gereksiz yere RAM blok etmeye devam eder.
🚀 HazalHost LVE CloudLinux Limitleri
HazalHost'un cPanel hosting altyapısında CloudLinux'in CageFS izolasyonu bulunur. Hangi sitenin (veya eklentinin) RAM'in ne kadarlık bir kısmını kaç dakikada sömürdüğünü saniye saniye şeffaf olarak görür, bir sitenin diğerini çökertme ihtimalini (Bad Neighbor problemi) tamamen engellersiniz.
RAM Sıtmasından Nasıl Kurtuluruz?
- Takip Edin (Ölçün): Linux terminalde
htopkomutunu yazın ve üst sekmelerde "MEM%" sütununa tıklayarak hangi uygulamanın (Örn: mysql veya php) RAM'in başını tuttuğunu tespit edin. - PHP Memory Limit Ayarı:
php.iniiçerisindememory_limit = 256Mveya en fazla512Mdeğerini vermeli, sonsuz (limitsiz) izinleri kapatmalısınız. - Object Caching Devreye Sokun: Veritabanınızın devamlı büyük işlemlerini (Sorguları) Memcached veya Redis gibi hafif yapılara iterek MySQL'in yükünü zayıflatın.
- Dinamik Ziyaretçileri Statikleştirin: Litespeed Cache ile sitenizin tüm arayüzünü (HTML) Cache dondurucuya atın ki, PHP (memory) işlemi hiç tetiklenmesin!
Sonuç
Sunucunuz RAM'den dolayı çöküyorsa ilk işiniz yeni bir Ram yongası satın almaktan önce sitenizin altyapısındaki "kaçakları" veya "memory_limit" savurganlığını bulmak olmalıdır.