Medir a pressão no cache do WiredTiger (ocupação, taxa de dirty, eviction pela aplicação)
MongoDBDesempenhoComando
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.concurrentTransactionsO que faz
Mostra o tamanho do cache do WiredTiger, seus percentuais de ocupação e de dirty, quantas páginas as threads da aplicação foram forçadas a fazer eviction e o status dos tickets de leitura/escrita.
Quando usar
Quando as leituras de disco aumentam, a latência dispara de repente ou o throughput de escrita cai; ao dimensionar o cache.
Atenção
Quando a ocupação passa de 80% (eviction_target), começa o eviction em background; em 95% (eviction_trigger), as threads da aplicação também participam do eviction e as consultas ficam lentas. Para dados dirty, 5% é o alvo e 20% o gatilho; ficar constantemente perto de 20% significa que a capacidade de escrita em disco é insuficiente. Um contador pages evicted by application threads crescente é latência sentida diretamente pelos usuários. Os valores são contadores cumulativos; olhe a diferença entre duas amostras.
Relacionados
- Inspecionar um plano de consulta com estatísticas reais de execução (explain executionStats)
- Extrair as consultas e query shapes mais lentas dos dados do profiler
- Encontrar índices não utilizados e ocultá-los antes de remover (hideIndex)
- Contar conexões por aplicação e cliente (diagnóstico de connection storm)