Birkaç haftadır MongoDB kullanıyoruz, gördüğümüz genel eğilim mongodb'un çok fazla bellek kullanmasıydı (veri kümesi + dizinlerinin tüm boyutundan çok daha fazla).
Bu soruyu ve bu soruyu çoktan okudum , ancak hiçbiri karşılaştığım konuyu ele almıyor gibi görünüyor, aslında belgelerde açıklanmış olanları açıklıyorlar.
Aşağıdakiler htop ve show dbs komutlarının sonuçlarıdır .
Mongodb'un IO eşlemeli bellek kullandığını biliyorum, bu yüzden temelde işletim sistemi bellekteki şeyleri önbelleğe alıyor ve başka bir işlem boş bellek istediğinde mongodb teorik olarak önbelleğe alınmış belleğe gitmesine izin vermeli , fakat gördüklerimize göre, değil.
OOM, postgres, redis, vb. Gibi diğer önemli süreçleri öldürmeye başladı. (Görüldüğü gibi, bu sorunun üstesinden gelmek için RAM'i şimdi çalışan ancak oldukça pahalı olan 183 GB'a yükselttik. veri setinin büyüklüğünün yaklaşık 4 katı
Yani,
- Bu kadar bellek kullanımı gerçekten beklenen ve normal mi? (Belgelere göre, WiredTiger önbelleği için en fazla ~% 60 RAM kullanıyor, ancak veri kümesi boyutunu göz önüne alarak 86GB RAM alabilmek için yeterli veriye sahip mi?)
- Bellek kullanımı bekleniyor olsa bile, başka bir işlem daha fazla bellek talep etmeye başlarsa, neden mongo ayrılan belleğini bırakmıyor? RAM'ı artırmadan ve sistemi tamamen dengesiz hale getirmeden önce, diğer çeşitli çalışan işlemler, mongodb'un kendisi de dahil olmak üzere linux oom tarafından sürekli olarak öldürülüyordu.
Teşekkürler !