Измерение давления на кэш WiredTiger (заполнение, доля грязных данных, вытеснение потоками приложения)
MongoDBПроизводительностьКоманда
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.concurrentTransactionsЧто делает
Показывает размер кэша WiredTiger, процент заполнения и грязных данных, сколько страниц были вынуждены вытеснить потоки приложения, и состояние тикетов чтения/записи.
Когда использовать
Когда растут чтения с диска, внезапно скачет задержка или падает пропускная способность записи; при определении размера кэша.
Внимание
Когда заполнение превышает 80% (eviction_target), начинается фоновое вытеснение; при 95% (eviction_trigger) в вытеснении участвуют и потоки приложения, и запросы замедляются. Для грязных данных 5% — цель, 20% — триггер; постоянное значение около 20% означает нехватку производительности записи на диск. Растущий счётчик pages evicted by application threads — это задержка, которую пользователи ощущают напрямую. Значения — накопительные счётчики; смотрите на разницу между двумя замерами.
Связанные материалы
- Анализ плана запроса с реальной статистикой выполнения (explain executionStats)
- Извлечение самых медленных запросов и форм запросов из данных профилировщика
- Поиск неиспользуемых индексов и их скрытие перед удалением (hideIndex)
- Подсчёт соединений по приложениям и клиентам (диагностика шторма подключений)