Druck auf den WiredTiger-Cache messen (Füllgrad, Dirty-Anteil, Eviction durch Anwendungs-Threads)
MongoDBPerformanceBefehl
const c = db.serverStatus().wiredTiger.cache;
const max = c["maximum bytes configured"];
({
maxGB: (max / 1024 ** 3).toFixed(1),
usedPct: (100 * c["bytes currently in the cache"] / max).toFixed(1),
dirtyPct: (100 * c["tracked dirty bytes in the cache"] / max).toFixed(1),
appThreadEvictedPages: c["pages evicted by application threads"],
pagesReadIntoCache: c["pages read into cache"]
})
// Read/write ticket usage and queue:
db.serverStatus().wiredTiger.concurrentTransactionsWas es tut
Zeigt Größe des WiredTiger-Caches, Füllgrad und Dirty-Anteil in Prozent, wie viele Seiten Anwendungs-Threads zwangsweise verdrängen mussten, und den Status der Lese-/Schreib-Tickets.
Wann einsetzen
Wenn Plattenlesevorgänge zunehmen, die Latenz plötzlich ansteigt oder der Schreibdurchsatz sinkt; beim Dimensionieren des Caches.
Vorsicht
Überschreitet der Füllgrad 80% (eviction_target), beginnt die Eviction im Hintergrund; bei 95% (eviction_trigger) beteiligen sich auch Anwendungs-Threads an der Eviction und Abfragen werden langsamer. Für Dirty-Daten sind 5% das Ziel und 20% der Auslöser; ständig nahe 20% bedeutet, dass die Schreibkapazität der Platte nicht ausreicht. Ein wachsender Zähler pages evicted by application threads ist Latenz, die Benutzer direkt spüren. Die Werte sind kumulative Zähler; betrachte die Differenz zwischen zwei Messungen.
Verwandte Einträge
- Abfrageplan mit echten Ausführungsstatistiken untersuchen (explain executionStats)
- Die langsamsten Abfragen und Query Shapes aus Profiler-Daten ermitteln
- Ungenutzte Indizes finden und vor dem Löschen verstecken (hideIndex)
- Verbindungen nach Anwendung und Client zählen (Diagnose eines Connection Storms)