MongoDB Çoklu Doküman İşlem Limiti: WiredTiger Bellek Baskısı, transactionLifetimeLimitSeconds ve Toplu Yazma
Tek bir ACID transaction içinde binlerce dokümanın değiştirilmesi sonucu WiredTiger önbelleğinin taşması; transaction parçalama ve bulkWrite desenleri.
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
Çoklu doküman transaction'ı çalışırken işlem anında abort edilir:
MongoServerError: TransactionTooLargeForCache
MongoServerError: Transaction exceeded 16MB limit▸Sahada Ne Görürsün?
Toplu veri güncelleme veya hesap mutabakatı çalıştıran transaction birkaç saniye sonra düşer. Uygulama rollback alır.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %60 | Tek Transaction İçinde Aşırı Doküman Mutasyonu | Tek bir session.withTransaction bloğunda on binlerce doküman güncellenmiştir. Transaction oplog girdisi 16MB limitini aşmıştır. |
| %25 | WiredTiger Önbellek Baskısı | Sistemde RAM düşüktür ve önbellek transaction kilitlerini tutamaz hale gelmiştir. |
| %15 | `transactionLifetimeLimitSeconds` (60s) Aşımı | Transaction çok uzun sürdüğü için sunucu tarafından sonlandırılmıştır. |
▸ACİL RUNBOOK (0-5dk)
// 1. Transaction'ı 1000'erli alt gruplara bölerek çalıştır
// Antipattern: 50.000 update tek transaction'da
// Çözüm: bulkWrite ile 1000'lik chunk'lar halinde commit et
const chunkSize = 1000;
for (let i = 0; i < operations.length; i += chunkSize) {
const chunk = operations.slice(i, i + chunkSize);
await db.users.bulkWrite(chunk, { ordered: false });
}▸KALICI BLUEPRINT
- 1Transaction Kapsamını Daraltın: MongoDB'de multi-document transaction'lar sadece finansal transfer gibi kesin ACID gereken 2-5 dokümanlık işlemler için kullanılmalıdır.
- 2Saga Deseni: Dağıtık ve büyük operasyonlarda tek dev transaction yerine telafi edici işlemler (Saga pattern) uygulanmalıdır.
▸Doğrulama
db.serverStatus().transactions;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ı.