Я использую машину с открытым исходным кодом (RHEL 6.2) под управлением программного обеспечения SIEM. Когда я запускаю top
команду, я вижу postgres
и то и postmaster
другое с загрузкой процессора 96%. Есть ли способ уточнить или посмотреть, что заставляет эти службы складываться?
postgresql
asadz
источник
источник
postgress
,postgres
и вы только что скопировали это вручную.Ответы:
Вы можете сопоставить конкретный внутренний идентификатор Postgres с идентификатором системного процесса, используя
pg_stat_activity
системную таблицу.SELECT pid, datname, usename, query FROM pg_stat_activity;
может быть хорошей отправной точкой.Как только вы узнаете, какие запросы выполняются, вы можете продолжить расследование (
EXPLAIN
/EXPLAIN ANALYZE
; проверить блокировки и т. Д.)источник
WHERE
предложения, но если у вас нет большого количества PID, это так же, как легко искать через полный вывод. Руководство Postgres содержит дополнительную информацию о том, что вы можете получитьpg_stat_activity
, а также другие таблицы сбора статистики (которые могут помочь вам, если ваша проблема не в пользовательском запросе).У меня была такая же проблема. Postgresql настроен на AWS RDS, и его загрузка процессора составила 100% даже после увеличения экземпляра. Я отладил с помощью метода, показанного здесь, и один из методов работал для меня.
Я проверил, выполняется ли запрос дольше всего, и узнал, что некоторые запросы зависли и выполнялись более 3-4 часов. Чтобы узнать, сколько времени выполняется запрос, выполните следующую команду:
Если это больше часа, то это проблема. Убейте долго работающее соединение и ограничьте максимальный возраст соединения со стороны приложения.
источник
Если это действительно почтмейстер, использующий весь этот процессор, то, скорее всего, у вас проблемы с блокировкой, возможно, из-за очень высокой нагрузки
max_connections
. Рассмотрите возможность уменьшенияmax_connections
и использования пула соединений, если это так.В противном случае: Подробности, пожалуйста. Полный вывод
top -b -n 1
для начала.источник