Инструменты для анализа производительности
Встроенные утилиты диагностики
В MongoDB есть утилиты получения данных о производительности:
- mongostat — собирает статистику утилизации ресурсов CPU и памяти процессами MongoDB,
- mongotop — собирает статистику чтения/записи данных по каждой коллекции.
При вызове этих утилит используйте строку подключения с логином и паролем пользователя с ролью mdbMonitor
, например:
mongostat 5 --uri="mongodb://{имя_пользователя_с ролью_mdbMonitor}:{пароль}@{хост}:27018/?authSource=admin"
mongotop 5 --uri="mongodb://{имя_пользователя_с ролью_mdbMonitor}:{пароль}@{хост}:27018/?authSource=admin"
Здесь обе утилиты выводят набор данных о производительности c интервалом опроса (polling interval) в 5 секунд.
Подробнее об использовании утилит monostat
и mongotop
см. в документации MongoDB.
Профилировщик
В MongoDB есть встроенный профилировщик. Он собирает данные о запросах. Затем на основе этих данных формируется стратегия оптимизации запросов. Работой профилировщика управляют настройки MongoDB, которые вы можете задать при создании кластера или изменении настроек СУБД:
Важно
Использование значения all
для настройки operationProfiling.mode
и близкого к 0
значения для настройки operationProfiling.slowOpThreshold
значительно снижает производительность кластера.
Чтобы просмотреть данные, собранные профилировщиком, обратитесь к коллекции system.profile
в каждой БД. Коллекции профилировщика доступны для чтения пользователю с ролью mdbMonitor
. По умолчанию данные дублируются в логах.
Подробнее о настройке профилировщика и о том, как интерпретировать его результаты, читайте в документации MongoDB.
Выполняемые в данный момент запросы
Чтобы посмотреть не относящиеся к текущему пользователю запросы, от имени пользователя с ролью mdbMonitor
выполните операцию db.currentOp():
db.currentOp()
Чтобы посмотреть запросы текущего пользователя, выполните операцию db.currentOp()
со значением true
для настройки ownOps
:
db.currentOp({ "$ownOps": true })
Логи
Наиболее подробная информация о работе MongoDB содержится в логах.
- Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
- Нажмите на имя нужного кластера и выберите вкладку Логи.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы посмотреть логи Managed Service for MongoDB:
-
Посмотрите описание команды CLI для просмотра логов:
yc managed-mongodb cluster list-logs --help
-
Для получения всех логов кластера выполните команду:
yc managed-mongodb cluster list-logs --id <идентификатор кластера>
Идентификатор кластера можно получить со списком кластеров в каталоге.
Воспользуйтесь методом API listLogs и передайте идентификатор кластера в параметре clusterId
запроса.
Идентификатор кластера можно получить со списком кластеров в каталоге.