Когда настраиваете сервер или кластер PostgreSQL, перед тем, как нагрузить его рабочей нагрузкой, хочется как-то протестировать его и посмотреть, как он себя поведёт под нагрузкой или в случае каких-то ошибок. Особенно это актуально, если у вас ещё и мониторинг настроен. Хочется на деле посмотреть, как он отработает.
Сделать подобное тестирование с имитацией рабочей нагрузки и ошибок можно с помощью утилиты Noisia. Она написала на Gо, есть в виде бинарника или rpm, deb пакета. Забрать можно из репозитория. Либо запустить через Docker.
Автор утилиты подробно рассказывает про принцип работы и функциональность на онлайн вебинаре — Noisia - генератор аварийных и нештатных ситуаций в PostgreSQL (текстовая расшифровка). Там описаны основные возможности и параметры для использования.
Вот простой пример исчерпания всех доступных подключений к базе, которые обязательно должны мониториться, чтобы своевременно увеличить лимит подключений, или разобраться, куда они все ушли.
# docker run --rm -ti lesovsky/noisia:latest noisia \--conninfo="postgres://postgres:[email protected]:5432/dbname" \--failconns
Не забудьте настроить удалённые подключения к базе, либо запускайте нагрузку локально, не через docker.
Запуск транзакций, которые завершаются откатом (ROLLBACK), то есть заканчиваются с ошибкой. За ними обычно тоже следят (pg_stat_database.xact_rollback).
# docker run --rm -ti lesovsky/noisia:latest noisia \--conninfo="postgres://postgres:[email protected]:5432/dbname" \--rollbacks \--rollbacks.min-rate=10 \--jobs=3 \--duration=20
Ну и так далее. Все параметры можно посмотреть в help:
# docker run --rm -ti lesovsky/noisia:latest noisia --help
#postgresql