Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Call of Postgres: Advanced Operations. Part IV.

Call of Postgres: Advanced Operations. Part IV.

Slides from my tutorial at PgDay 2017 St.Petersburg, Russia

Alexey Lesovsky

July 05, 2017
Tweet

More Decks by Alexey Lesovsky

Other Decks in Education

Transcript

  1. Инструменты 04 dataegret.com Инструменты бывают: • Сторонние. • Встроенные. •

    Самодельные. Большая часть основана на встроенной статистике.
  2. Инструменты 04 dataegret.com Сторонние инструменты: • Консольные. • Web. •

    Плагины для систем мониторинга. • https://wiki.postgresql.org/wiki/Monitoring
  3. Инструменты 04 dataegret.com Встроенные инструменты: • Системные функции и представления.

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

    и представлениям. • Ad-hoc скрипты на shell/perl/python/… • Системы управления конфигурациями.
  5. Статистика 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. • …
  6. Статистика 04 dataegret.com pg_stat_database, pg_stat_database_conflicts: • Операции commit/rollback, read/insert/update/delete; •

    Чтение из кэша/диска; • deadlock'и, временные файлы, конфликты при восстановлении.
  7. Статистика 04 dataegret.com pg_stat_replication, pg_stat_subscription, pg_replication_slots: • Статус standby-узлов, слотов

    репликации; • Лаг репликации; • Возраст запросов на standby-узлах.
  8. Статистика 04 dataegret.com pg_stat_user_tables, pg_stat_user_indexes, pg_statio_user_tables, pg_statio_user_indexes: • Количество операций

    доступа к таблице/индексу; • Количество IUD операций по таблицам; • Количество операций vacuum/analyze над таблицей; • Количество IO операций над таблицей/индексом.
  9. Статистика 04 dataegret.com pg_stat_activity, pg_locks; • Текущая клиентская активность; •

    Вредная активность (idle/long transactions, waitings); • Информация о блокировках.
  10. Статистика 04 dataegret.com pg_stat_statements, pg_buffercache, pg_stat_kcache: • Информация о выполненных

    запросах; • Лайтовое профилирование shared buffers; • Сколько «потрачено» на выполнении запросов.
  11. Типы проблем 04 dataegret.com Использование ресурсов: • Неоптимальное выполнение запросов.

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

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

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

    вы хорошо знаете свой ворклоад; • pg_stat_activity; • pg_stat_statements; • pg_stat_functions.
  15. Поиск и определение 04 dataegret.com Отчеты по запросам: • log_min_duration_statements

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

    pg_stat_bgwriter; • Autovacuum – postgres log, pg_stat_activity, pg_stat_progress_vacuum.
  17. Поиск и определение 04 dataegret.com Периодические отчеты: • Отчеты об

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

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

    стук»; • Strace, Perf, SystemTap, BPF, etc... • Придется писать bug репорт в pgsql-hackers (как правило); • Проблема не решается быстро.
  20. Резюме 04 dataegret.com Может показаться что инструментов много – но

    это не так. Все инструменты крутятся вокруг встроенной статистики. Нужно иметь представление о том что есть в статистике.