MongoDB Disk Dolması ve Önbellek Kilitlenmesi: Journal/Veri Dosyası Ayrımı, TTL İndeksleri ve Acil Tahliye
Veri dizininde disk kalmaması durumunda WiredTiger önbelleğinin kilitlenmesi ve sunucunun kapanması; acil disk genişletme, TTL indeksleri ve ayrı journal diski mimarisi.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
MongoDB aniden tüm yazma işlemlerini durdurur veya process kapanır:
WiredTiger error (28) [1234:0x7f]: /data/db/journal/WiredTigerLog.0000000123: handle-write: pwrite: No space left on device
Fatal Assertion 28558 at src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp▸Sahada Ne Görürsün?
Sunucu çöker. Tekrar başlatılmaya çalışıldığında journal yazamadığı için başlatma anında tekrar kapanır.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %60 | Journal ve Veri Diskinin Dolması | diagnostic.data ve journal dosyaları kontrolsüzce büyüyüp diski tüketmiştir. |
| %25 | WiredTiger Cache Dolması (Cache Eviction Stall) | Disk yavaş olduğu için kirli sayfalar diske yazılamaz, önbellek %95 dolup tüm işlemleri kilitler. |
| %15 | Silinen Verinin Diske İade Edilmemesi (Fragmentation) | deleteMany çalıştırılsa bile WiredTiger işletim sistemine disk alanını hemen iade etmez. |
▸ACİL RUNBOOK (0-5dk)
# 1. Disk durumunu gör
df -h
# 2. Acil yer açmak için teşhis verilerini (diagnostic.data) temizle
rm -rf /var/lib/mongodb/diagnostic.data/*
# 3. Eski log dosyasını arşivleyip boşalt
echo "" > /var/log/mongodb/mongod.log
# 4. Sunucuyu başlat
sudo systemctl start mongod▸KALICI BLUEPRINT
- 1Ayrı Journal ve Data Diski: Journal dosyaları (
/journal) ayrı bir NVMe disk bölümüne taşınmalıdır. - 2TTL İndeksleri ile Otomatik Tahliye: Geçici veya oturum verileri için TTL indeksleri tanımlanmalıdır:
db.sessions.createIndex({ createdAt: 1 }, { expireAfterSeconds: 86400 });- 1Cache Boyutu Ayarı:
wiredTigerCacheSizeGB = (Total RAM - 1GB) * 0.5olarak ayarlanmalıdır.
▸Doğrulama
db.stats();
db.serverStatus().wiredTiger.cache["bytes currently in the cache"];Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
MongoDB "not master" / NotWritablePrimary Hatası
Failover sonrası "not master" hatasının nedeni, replicaSet içermeyen bağlantı dizesi, retryWrites ve election fırtınası teşhisi.
MongoDB E11000: Duplicate Key Error Teşhisi ve Çözümü
Aynı anahtara sahip iki dokümanın eşzamanlı eklenmesiyle oluşan E11000 hatasının tespiti, getIndexes denetimi ve $setOnInsert ile upsert desenleri.
MongoDB MongoNetworkError & HostUnreachable Teşhisi
Replica set primary düğümünün çökmesi, yanlış mongodb+srv dizesi ve ağ gecikmelerinde sürücünün bağlantı havuzunu temizlemesi; rs.status() ve kalıcı timeout ayarları.