MongoDB Connection Exhaustion: Find the Client Filling the Pool
Identifies connections by client and application, distinguishes pool leaks from connection storms, and guides safe response when MongoDB approaches its connection limit.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
`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. Business & Technical 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. Diagnosis & Root-Cause Analysis
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. Remediation & Action Plan
5. Verification & Health Checks
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. Rollback & Contingency Plan
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.