Почему Postgres постепенно все сильнее нагружает процессор при постоянной нагрузке?

Платформа: windows.
Имеется Postgres и приложение на node.js. В процессе работы приложения к базе производится порядка 20-30 запросов в секунду (чтение и запись).
Проблема заключается в том, что после запуска приложения на node.js, Posgres начинает потреблять процессор по нарастающей. Т.е. на момент запуска приложения нагрузка на процессор со стороны базы составляет несколько процентов, на запросы база отвечает очень быстро, можно сказать, что "все летает". Уже через полчаса нагрузка составляет порядка 10%, запросы чуть притормаживают. Еще через полчаса нагрузка со стороны базы на процессор составляет уже порядка 50%, количество выполняемых запросов падает до 10-15, т.е. в два раза по сравнению с запуском. И так вплоть до того, что загрузка ЦП доходит до 100% и "все тормозит".
При этом процессы Posgres так же увеличивают потребление ОЗУ, но его хватает и база не потребляет больше 10 GB из 24Gb, имеющихся на машине.
Проблема решается перезапуском приложения на node.js. Т.е. если его прибить и запустить снова - то все начинается с начала. Такое ощущение, что Posgres кэширует что-то для активных соединений и поиск в этом кэше грузит процессор. Т.к. если зайти в базу через PGAdmin и выполнить запрос оттуда - то он выполняется быстро.

Запросы со стороны node.js осуществляются посредством Sequelize через пул из 5-ти соединений.
Размер базы порядка 15Gb вместе со всеми индексами. Тяжелых запросов нет. Время выполнения запросов исчисляется милисекундами.
Конфиг Postgres: pastebin.com/Vm1jp7VB
Процессор: Core i5-3570K (4 ядра)
ОЗУ: 24Gb.
  • Вопрос задан
  • 1814 просмотров
Пригласить эксперта
Ответы на вопрос 1
terrier
@terrier
Посмотрите в pg_stat_activity - никто на локах не зависает? Запросы по часу не исполняются? Соединений получается точно пять?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы