MongoDB Bağlantı Tükenmesi: Hangi İstemci Bağlantıları Dolduruyor?
Bağlantı sınırına yaklaşan MongoDB sunucusunda istemci ve uygulama bazında oturumları belirler; havuz kaçağını ve bağlantı fırtınasını ayırıp güvenli müdahale önerir.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
`db.serverStatus().connections.current` hızla artar, `available` düşer (M49); istemcide connection timeout, server selection timeout veya connection refused görülür. `mongos` kullanılan kümelerde yönlendirici ve `mongod` bağlantılarını ayrı değerlendirin.
2. Etki / Impact
Yeni bağlantılar açılamaz, havuz beklemeleri ve API hataları artar. Mevcut oturumlar çalışsa da kısa süre sonra uygulama kullanılmaz hale gelebilir.
3. Teşhis / Diagnosis
const c = db.serverStatus().connections;
({ current: c.current, available: c.available, totalCreated: c.totalCreated });db.getSiblingDB('admin').aggregate([
{ $currentOp: { allUsers: true, idleConnections: true } },
{ $match: { client: { $type: 'string' } } },
{ $group: { _id: { client: '$client', app: '$appName' }, count: { $sum: 1 } } },
{ $sort: { count: -1 } }, { $limit: 20 }
]);`client` genellikle port içerir; aynı IP'nin farklı portlarını ayrıca gruplayın. `$currentOp` için uygun clusterMonitor/inprog yetkisi gerekir. Komut desteklenmiyorsa uygulama havuzu telemetrisi ve bağlantı loglarını kullanın.
4. Müdahale / Response
5. Doğrulama / Verification
M49 düşüyor, `available` payı toparlanıyor, `totalCreated` artışı olağan hızda; uygulamanın yeni bağlantıları ve sorguları başarılı. En az 15 dakika tekrarını izleyin.
6. Geri Alma / Rollback
Havuz ayarını eski değere ve eski deployment sürümüne döndürün. Sonlandırılan işlemler geri alınmaz; uygulamanın idempotent retry davranışını ve olası kısmi sonuçları kontrol edin.