Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Call of Postgres: Advanced Operations. Part IV.
Search
Alexey Lesovsky
July 05, 2017
Education
0
25
Call of Postgres: Advanced Operations. Part IV.
Slides from my tutorial at PgDay 2017 St.Petersburg, Russia
Alexey Lesovsky
July 05, 2017
Tweet
Share
More Decks by Alexey Lesovsky
See All by Alexey Lesovsky
PostgreSQL Scaling Usecases
lesovsky
0
100
Patroni failure stories, or How to crash yout PostgreSQL cluster
lesovsky
0
420
PostgreSQL High Availability in 2019
lesovsky
0
360
Top developer's mistakes when working with PostgreSQL
lesovsky
1
140
Let's Pull the Plug On the Autovacuum (EN)
lesovsky
0
1.2k
Troubleshooting PostgreSQL for Developers (RU)
lesovsky
2
350
Troubleshooting PostgreSQL Streaming Replication
lesovsky
0
960
Call of Postgres: Advanced Operations. Part I.
lesovsky
0
64
Call of Postgres: Advanced Operations. Part II.
lesovsky
0
75
Other Decks in Education
See All in Education
2025/06/05_読み漁り学習
nag8
0
160
View Manipulation and Reduction - Lecture 9 - Information Visualisation (4019538FNR)
signer
PRO
1
2.1k
AWSと共に英語を学ぼう
amarelo_n24
0
110
検索/ディスプレイ/SNS
takenawa
0
9.2k
Avoin jakaminen ja Creative Commons -lisenssit
matleenalaakso
0
1.9k
IMU-00 Pi
kanaya
0
370
計算情報学研究室 (数理情報学第7研究室)紹介スライド (2025)
tomonatu8
0
600
人になにかを教えるときに考えていること(2025-05版 / VRC-LT #18)
sksat
4
1.1k
SARA Annual Report 2024-25
sara2023
1
190
Implicit and Cross-Device Interaction - Lecture 10 - Next Generation User Interfaces (4018166FNR)
signer
PRO
2
1.7k
Visualisation Techniques - Lecture 8 - Information Visualisation (4019538FNR)
signer
PRO
0
2.4k
2025年度春学期 統計学 第11回 分布の「型」を考える ー 確率分布モデルと正規分布 (2025. 6. 19)
akiraasano
PRO
0
150
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Designing for humans not robots
tammielis
253
25k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Bash Introduction
62gerente
613
210k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Transcript
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