4

Наличие базы данных postgres на AWS-RDS Swap Usage в постоянном повышении.Postgres Почему растет использование подкачки? Как его уменьшить? - AWS RDS

Почему он растет? Я попытался перезагрузить, но он не тонет. AWS пишет, что использование большого свопа - «, указывающее на проблемы с производительностью»

Я пишу данные в эту БД. CPU и памяти выглядят здоровыми: enter image description here

Чтобы быть точным у меня есть
db.t2.micro -instance и на данный момент ~ 30/100 ГБ данных в таблицах 5 - общее назначение SSD. С умолчанию postgresql.conf.

Своп-график выглядит следующим образом:

enter image description here

Своп предупреждение Использование:

enter image description here

+0

Не зная ваш postgresql.conf это трудно сказать. Обычно это сложный запрос с агрегацией, когда множество вычислений в памяти пытается выполнить PostgreSQL. Однако 13.00MB SWAP вовсе не проблема, особенно на SSD, хотя они и являются универсальными. Я бы не стал беспокоиться. У меня 378Gb оперативной памяти для PostgreSQL, и она как-то использует 36.8M swap - это не проблема для меня вообще! –

+0

@IlyaDyoshin: Спасибо. Это очень помогает мне. Я использую стандартный RDS postgresql.conf, если это помогает – Rentrop

+1

Ну Кажется, что ваши запросы используют объем памяти над вашим доступным.Поэтому вы должны посмотреть на план выполнения запросов и найти самые большие нагрузки. Эти запросы превышают память, доступную для postgresql. Обычно чрезмерное объединение (т. Е. Плохая структура базы данных, которая была бы лучше denonarmalized, если применимо) или множество вложенных запросов или запросов с предложениями IN - это типичные подозреваемые. Я думаю, что амазонка доставлена ​​как можно больше для postgresql.conf, и эти значения по умолчанию неплохо подходят для этой крошечной машины. –

ответ

1

Ну Кажется, что ваши запросы используют объем памяти над вашим доступным. Поэтому вы должны посмотреть на план выполнения запросов и найти самые большие нагрузки. Эти запросы превышают память, доступную для postgresql. Обычно чрезмерное объединение (т. Е. Плохая структура базы данных, которая была бы лучше denonarmalized, если применимо) или множество вложенных запросов или запросов с предложениями IN - это типичные подозреваемые. Я думаю, что амазонка доставлена ​​как можно больше для postgresql.conf, и эти значения по умолчанию неплохо подходят для этой крошечной машины.

Но еще раз, если ваш размер подкачки не не выходя за пределы доступной памяти и ваш находятся на SSD - было бы не так уж много вреда от него

1

Очевидно, что вы выбежали из памяти. У db.t2.micro есть только 1 ГБ ОЗУ. Вы должны посмотреть на выходе htop, чтобы узнать, какие процессы занимают большую часть памяти и пытаются оптимизировать использование памяти. Также есть хорошая утилита, называемая pgtop (http://ptop.projects.pgfoundry.org/), которая показывает текущие запросы, количество прочитанных строк и т. Д. Вы можете использовать его для просмотра вашего состояния после выхода в реальном времени. Кстати, если вы не можете установить pgtop, вы можете получить только ту же информацию из встроенных инструментов posgres - проверьте документацию статистики postgres stats collector https://www.postgresql.org/docs/9.6/static/monitoring-stats.html

На самом деле сложно сказать, в чем проблема, но db.t2.micro является очень ограниченным экземпляром. Вам следует подумать о том, чтобы использовать экземпляр biggier, особенно если вы используете постгидры на производстве.

1

Проверьте

select * from pg_stat_activity; 

и посмотреть, если какой процесс принятия долго и сколько процессов сна, попробуйте изменить RDS DbParameter в соответствии с вашими потребностями.

Смежные вопросы