потратили и не можем найти решения...
Имеется проблема - база данных жестко тормозит и ведет себя очень безобразно.. При подключении множества проектов - начинает расти количество запросов DISCARD ALL в таблице pg_stat_activity. Увеличивается очень быстро и впоследствии вызывает тормоза базы. Данный запрос возникает на мастере от балансира.
Стек: Кластер
balancer-master-slave-slave
(На виртуалках)
Версия postgresql: PostgreSQL 11.12 (Debian 11.12-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
Версия pgpool: 4.3.0-debian-10-r5
Имхо, DISCARD ALL значит, что клиентов pgpool много, а егойных сессий в postgresql мало, и он постоянно переключает имеющиеся сессии между клиентами. Может быть клиентов стало много (изменилось поведения приложений), может быть сессии дохнут, остаётся всего несколько. Я бы начал с проверки, все ли сессии pgpool используются (выполняют запросы иногда). А если какие-то не бегут, то в каком состоянии они зависли. Ну и количество этих сессий и количество клиентов — проверить адекватность
Можете подсказать как это проанализировать? pg_stat_activity прикрепил ниже.
csv без имён колонок... Правильно ли я понял, что это select * from pg_stat_activity? Активности сейчас никакой нет на сервере, поэтому трудно оценить, нормально ли то, что этим сессии находятся в состоянии idle. Это нормальная картина, если вы включили приложения и сняли нагрузку. Разброс между временем последнего использования не космический: насколько сессий последний раз работали ы 11:20, но в основном все в 11:30. Но если нагрузка была большая, а потом оборвалась резко — я бы ожидал более близких чисел
Извините за список колонок) Не совсем. Запрос вида select * from pg_stat_activity where query ilike '%DISCARD ALL%'; Активность сейчас есть, но не очень большая. Пользователи работают. 11:30 это текущее время сервера. Нагрузка была небольшая и не обрывалась, а лишь просто со стороны балансира на мастере висят запросы discard all
Обсуждают сегодня