Назад | Перейти на главную страницу

Postgres внезапно стал медленнее и быстрее стал загружать процессор

У нас работает база данных Postgres размером около 38 ГБ, размещенная в экземпляре EC2 на 68 ГБ. Он гудел вместе с нагрузкой ~ 0,7 (на 8-ядерной машине) и небольшой загрузкой ЦП примерно до 16 часов назад, когда загрузка ЦП увеличилась в течение пары часов и теперь намного выше, чем раньше (около 20 % от общего количества), и соответственно увеличилась средняя нагрузка (теперь от 5 до 8).

Согласно pg_stat_activity, машина видит от 100 до 300 одновременных подключений. Наша самая большая таблица составляет около 9,0 ГБ, включая индексы.

Вот что мы исключили:

Есть идеи, как действовать, или отследить эту проблему?

Включите полное ведение журнала на короткий период (~ 10 минут), если можете. Сохраните журнал и получите pgfouine (http://pgfouine.projects.postgresql.org/) проанализируйте это. Возможно, вы выполняете больше запросов, чем раньше, или выполняете запрос, который не очень эффективен.

Далее, возможно, у вас есть несколько медленных запросов, которые плохо влияют на работу. Посмотрите, какие запросы выполняются прямо сейчас:

SELECT pg_stat_activity.procpid AS pid, pg_stat_activity.usename AS username, pg_stat_activity.waiting, now() - pg_stat_activity.query_start AS age, pg_stat_activity.current_query AS query FROM pg_stat_activity WHERE pg_stat_activity.current_query <> '<IDLE>'::text ORDER BY now() - pg_stat_activity.query_start DESC;

Ищите запросы вверху списка. Один бегает очень давно? Если у вас есть транзакция, которая была открыта более 16 часов, это определенно сильно замедлит работу.