Bellek
Bu dokümanda bellek ile ilgili hataların nasıl çözüleceğini öğrenebilirsin.
Bellek yetersizliği
Node.js*(JavaScript)* çöp toplayıcı bir dildir, yani saklayıcılar aracılığıyla bellek sızıntıları olması mümkündür. Node.js uygulamaları genellikle çok kiracılı, uzun süreli çalışan ve kritik işlerdir. Dolayısıyla bellek sızıntılarını bulmak için erişilebilir ve verimli bir yol sunmak önemlidir.
Belirtiler
Kullanıcı, sürekli artan bellek kullanımını (hızlı veya yavaş, günler hatta haftalar boyunca) gözlemliyor, ardından işlem yöneticisi tarafından işlemin çöküp yeniden başlatıldığını görüyorsa. Belki de işlem önceki haline göre daha yavaş çalışıyor ve yeniden başlatmalar bazı isteklerin başarısız olmasına sebep oluyorsa*(yük dengeleyici 502 koduyla cevap veriyorsa)*.
Yan Etkiler
- Belleğin tükenmesi sebebiyle işlemin yeniden başlatılması ve isteklerin tamamlanamaması
- GC aktivitesinin artması sebebiyle oluşan daha fazla CPU kullanımı ve daha yavaş cevap süresi
- GC'nin Event Loop'u bloklaması ve yavaşlığa sebep olması
- Bellek takasının artışı sebebiyle işlemin yavaşlaması (GC aktivitesi)
- Heap Snapshot alabilmek için yeterli bellek alanının kalmaması
Belleğin verimsiz kullanılması
Belirtiler
Uygulamanın beklenenin dışında belleği kullanması ve/veya garbage collector aktivitesinin artığını gözlemek.
Yan Etkiler
- Artan sayıda sayfa hataları
- Yüksek GC aktivitesi ve CPU kullanımı
Hata ayıklamak
Çoğu bellek sorunu, belirli nesne türlerimizin ne kadar yer kapladığını ve onların çöp toplamasını engelleyen değişkenlerin neler olduğunu belirleyerek çözülebilir. Programımızın zaman içindeki tahsis desenini bilmek de yardımcı olabilir.