Call of Postgres: Advanced Operations Alexey Lesovsky lesovsky@gmail.com
Troubleshooting: теория 04
План04 dataegret.com Какие есть инструменты. Обнаружение проблем. Исследование проблем.
Инструменты04 dataegret.com Инструменты бывают: ● Сторонние. ● Встроенные. ● Самодельные.
Инструменты04 dataegret.com Инструменты бывают: ● Сторонние. ● Встроенные. ● Самодельные. Большая часть основана на встроенной статистике.
Инструменты04 dataegret.com Сторонние инструменты: ● Консольные. ● Web. ● Плагины для систем мониторинга. ● https://wiki.postgresql.org/wiki/Monitoring
Инструменты04 dataegret.com Встроенные инструменты: ● Системные функции и представления. ● Contrib-модули. ● Утилиты в комплекте (pgbench, pg_waldump, pg_test_fsync, etc.)
Инструменты04 dataegret.com Самодельные инструменты: ● Запросы к системным функциями и представлениям. ● Ad-hoc скрипты на shell/perl/python/… ● Системы управления конфигурациями.
Статистика04 dataegret.com Как правило, всё основано на встроенной статистике: ● pg_stat_database, pg_stat_database_conflicts; ● pg_stat_replication, pg_stat_subscription, pg_replication_slots; ● pg_stat_user_tables, pg_stat_user_indexes; ● pg_statio_user_tables, pg_statio_user_indexes; ● pg_stat_activity, pg_locks; ● pg_stat_bgwriter, pg_stat_archiver, pg_stat_progress_vacuum; ● pg_stat_statements, pg_buffercache, pg_stat_kcache. ● …
Статистика04 dataegret.com
Статистика04 dataegret.com pg_stat_database, pg_stat_database_conflicts: ● Операции commit/rollback, read/insert/update/delete; ● Чтение из кэша/диска; ● deadlock'и, временные файлы, конфликты при восстановлении.
Статистика04 dataegret.com pg_stat_replication, pg_stat_subscription, pg_replication_slots: ● Статус standby-узлов, слотов репликации; ● Лаг репликации; ● Возраст запросов на standby-узлах.
Статистика04 dataegret.com pg_stat_user_tables, pg_stat_user_indexes, pg_statio_user_tables, pg_statio_user_indexes: ● Количество операций доступа к таблице/индексу; ● Количество IUD операций по таблицам; ● Количество операций vacuum/analyze над таблицей; ● Количество IO операций над таблицей/индексом.
Статистика04 dataegret.com pg_stat_activity, pg_locks; ● Текущая клиентская активность; ● Вредная активность (idle/long transactions, waitings); ● Информация о блокировках.
Статистика04 dataegret.com pg_stat_bgwriter, pg_stat_archiver, pg_stat_progress_vacuum: ● Checkpointer, Bgwriter, WAL Archiver; ● Статус (auto)vacuum операций.
Статистика04 dataegret.com pg_stat_statements, pg_buffercache, pg_stat_kcache: ● Информация о выполненных запросах; ● Лайтовое профилирование shared buffers; ● Сколько «потрачено» на выполнении запросов.
Обнаружение проблем.04 dataegret.com План: ● Типы проблем. ● Обнаружение источников.
Типы проблем04 dataegret.com Использование ресурсов
Типы проблем04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов.
Типы проблем04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов.
Типы проблем04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов. ● Накопившиеся проблемы.
Типы проблем04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов. ● Накопившиеся проблемы. ● Потенциально опасные ситуации «здесь и сейчас».
Типы проблем04 dataegret.com Ошибки.
Типы проблем04 dataegret.com Ошибки: ● Клиентские ошибки.
Типы проблем04 dataegret.com Ошибки: ● Клиентские ошибки. ● Сервисные ошибки.
Поиск и определение04 dataegret.com Определение узкого места: ● Список процессов (бэкенды vs. фоновые процессы); ● Отчеты по запросам; ● Отчеты по фоновым процессам; ● Периодические отчеты; ● postgresql.log; ● Профилирование на коленке; ● Профилирование (perf, systemtap, gdb, coredump, etc.).
Поиск и определение04 dataegret.com Список процессов: ● Только если вы хорошо знаете свой ворклоад; ● pg_stat_activity; ● pg_stat_statements; ● pg_stat_functions.
Поиск и определение04 dataegret.com Отчеты по запросам: ● log_min_duration_statements + postgres log; ● pg_stat_statements, pg_stat_kcache; ● Log analyzers. ● EXPLAIN
Поиск и определение04 dataegret.com Отчеты по фоновым процессам: ● pg_stat_bgwriter; ● Autovacuum – postgres log, pg_stat_activity, pg_stat_progress_vacuum.
Поиск и определение04 dataegret.com Периодические отчеты: ● Отчеты об ошибках; ● Неиспользуемые индексы; ● Изменение размеров таблиц и индексов; ● Bloat; ● ...
Поиск и определение04 dataegret.com postgresql.log: ● Второе место куда следует заглянуть, если что-то пошло не так; ● Никакая детализация по-умолчанию. ● log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i] '
Поиск и определение04 dataegret.com Профилирование: ● Если вдруг «подземный стук»; ● Strace, Perf, SystemTap, BPF, etc... ● Придется писать bug репорт в pgsql-hackers (как правило); ● Проблема не решается быстро.
Резюме04 dataegret.com Может показаться что инструментов много – но это не так. Все инструменты крутятся вокруг встроенной статистики. Нужно иметь представление о том что есть в статистике.
Вопросы? dataegret.com lesovsky@gmail.com

Call of Postgres: Advanced Operations (part 4)