Slide 1

Slide 1 text

Call of Postgres: Advanced Operations Alexey Lesovsky [email protected]

Slide 2

Slide 2 text

Troubleshooting: теория 04

Slide 3

Slide 3 text

План 04 dataegret.com Какие есть инструменты. Обнаружение проблем. Исследование проблем.

Slide 4

Slide 4 text

Инструменты 04 dataegret.com Инструменты бывают: ● Сторонние. ● Встроенные. ● Самодельные.

Slide 5

Slide 5 text

Инструменты 04 dataegret.com Инструменты бывают: ● Сторонние. ● Встроенные. ● Самодельные. Большая часть основана на встроенной статистике.

Slide 6

Slide 6 text

Инструменты 04 dataegret.com Сторонние инструменты: ● Консольные. ● Web. ● Плагины для систем мониторинга. ● https://wiki.postgresql.org/wiki/Monitoring

Slide 7

Slide 7 text

Инструменты 04 dataegret.com Встроенные инструменты: ● Системные функции и представления. ● Contrib-модули. ● Утилиты в комплекте (pgbench, pg_waldump, pg_test_fsync, etc.)

Slide 8

Slide 8 text

Инструменты 04 dataegret.com Самодельные инструменты: ● Запросы к системным функциями и представлениям. ● Ad-hoc скрипты на shell/perl/python/… ● Системы управления конфигурациями.

Slide 9

Slide 9 text

Статистика 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. ● …

Slide 10

Slide 10 text

Статистика 04 dataegret.com

Slide 11

Slide 11 text

Статистика 04 dataegret.com pg_stat_database, pg_stat_database_conflicts: ● Операции commit/rollback, read/insert/update/delete; ● Чтение из кэша/диска; ● deadlock'и, временные файлы, конфликты при восстановлении.

Slide 12

Slide 12 text

Статистика 04 dataegret.com pg_stat_replication, pg_stat_subscription, pg_replication_slots: ● Статус standby-узлов, слотов репликации; ● Лаг репликации; ● Возраст запросов на standby-узлах.

Slide 13

Slide 13 text

Статистика 04 dataegret.com pg_stat_user_tables, pg_stat_user_indexes, pg_statio_user_tables, pg_statio_user_indexes: ● Количество операций доступа к таблице/индексу; ● Количество IUD операций по таблицам; ● Количество операций vacuum/analyze над таблицей; ● Количество IO операций над таблицей/индексом.

Slide 14

Slide 14 text

Статистика 04 dataegret.com pg_stat_activity, pg_locks; ● Текущая клиентская активность; ● Вредная активность (idle/long transactions, waitings); ● Информация о блокировках.

Slide 15

Slide 15 text

Статистика 04 dataegret.com pg_stat_bgwriter, pg_stat_archiver, pg_stat_progress_vacuum: ● Checkpointer, Bgwriter, WAL Archiver; ● Статус (auto)vacuum операций.

Slide 16

Slide 16 text

Статистика 04 dataegret.com pg_stat_statements, pg_buffercache, pg_stat_kcache: ● Информация о выполненных запросах; ● Лайтовое профилирование shared buffers; ● Сколько «потрачено» на выполнении запросов.

Slide 17

Slide 17 text

Обнаружение проблем. 04 dataegret.com План: ● Типы проблем. ● Обнаружение источников.

Slide 18

Slide 18 text

Типы проблем 04 dataegret.com Использование ресурсов

Slide 19

Slide 19 text

Типы проблем 04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов.

Slide 20

Slide 20 text

Типы проблем 04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов.

Slide 21

Slide 21 text

Типы проблем 04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов. ● Накопившиеся проблемы.

Slide 22

Slide 22 text

Типы проблем 04 dataegret.com Использование ресурсов: ● Неоптимальное выполнение запросов. ● Нагрузка от фоновых процессов. ● Накопившиеся проблемы. ● Потенциально опасные ситуации «здесь и сейчас».

Slide 23

Slide 23 text

Типы проблем 04 dataegret.com Ошибки.

Slide 24

Slide 24 text

Типы проблем 04 dataegret.com Ошибки: ● Клиентские ошибки.

Slide 25

Slide 25 text

Типы проблем 04 dataegret.com Ошибки: ● Клиентские ошибки. ● Сервисные ошибки.

Slide 26

Slide 26 text

Поиск и определение 04 dataegret.com Определение узкого места: ● Список процессов (бэкенды vs. фоновые процессы); ● Отчеты по запросам; ● Отчеты по фоновым процессам; ● Периодические отчеты; ● postgresql.log; ● Профилирование на коленке; ● Профилирование (perf, systemtap, gdb, coredump, etc.).

Slide 27

Slide 27 text

Поиск и определение 04 dataegret.com Список процессов: ● Только если вы хорошо знаете свой ворклоад; ● pg_stat_activity; ● pg_stat_statements; ● pg_stat_functions.

Slide 28

Slide 28 text

Поиск и определение 04 dataegret.com Отчеты по запросам: ● log_min_duration_statements + postgres log; ● pg_stat_statements, pg_stat_kcache; ● Log analyzers. ● EXPLAIN

Slide 29

Slide 29 text

Поиск и определение 04 dataegret.com Отчеты по фоновым процессам: ● pg_stat_bgwriter; ● Autovacuum – postgres log, pg_stat_activity, pg_stat_progress_vacuum.

Slide 30

Slide 30 text

Поиск и определение 04 dataegret.com Периодические отчеты: ● Отчеты об ошибках; ● Неиспользуемые индексы; ● Изменение размеров таблиц и индексов; ● Bloat; ● ...

Slide 31

Slide 31 text

Поиск и определение 04 dataegret.com postgresql.log: ● Второе место куда следует заглянуть, если что-то пошло не так; ● Никакая детализация по-умолчанию. ● log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i] '

Slide 32

Slide 32 text

Поиск и определение 04 dataegret.com Профилирование: ● Если вдруг «подземный стук»; ● Strace, Perf, SystemTap, BPF, etc... ● Придется писать bug репорт в pgsql-hackers (как правило); ● Проблема не решается быстро.

Slide 33

Slide 33 text

Резюме 04 dataegret.com Может показаться что инструментов много – но это не так. Все инструменты крутятся вокруг встроенной статистики. Нужно иметь представление о том что есть в статистике.

Slide 34

Slide 34 text

Вопросы? dataegret.com [email protected]