Comments 11
Но когда вы их увидели, надо понимать, как на них реагировать, куда «копать».
Кстате, когда пишите запросы, да и статью, указывайте хотя бы под какую версию PostgreSQL Вы все это делаете (тестировали), а то например на 9.4 ваш первый огромный SELECT не будет работать, там нет wait_event_type и wait_event в pg_stat_activity
Просто часть запросов version-specific, и приводить все их варианты смысла не очень много, а официальная поддержка 9.4 уже кончилась.
Спасибо, за статью, очень интересно и полезно. Не подскажите где можно почитать на тему того как понять когда нужно докупать железо, а когда проблема с конфигом. Ну к примеру у нас в приложении 200 server session и 1К transaction per second как понять этого много для нас и мало?
Железо надо покупать тогда, когда вы уперлись в какой-то ресурс (производительность CPU или диска, объем памяти) и не знаете способа, как уменьшить его потребление.
Например, 200 постоянно активных сессий будут хотеть много памяти (каждый коннект - процесс PG). Если у вас это количество выросло с 100 до 200, то и памяти понадобится вдвое.
С другой стороны, можно поставить pgbouncer в transaction mode, что сократит кол-во процессов до кол-ва активных транзакций.
А 1Ktps - не метрика производительности, поскольку они могут делать просто SELECT 1;
, а это ниочем
Мониторим базу PostgreSQL — кто виноват, и что делать