#postgresql #amazon-rds #dbeaver
#postgresql #amazon-rds #dbeaver
Вопрос:
Когда я впервые настроил свою базу данных Postgresql, я смог выполнить большой запрос, выполнение которого заняло примерно 5 минут и 30 секунд. Я переключил свой экземпляр AWS RDS на более низкий уровень, чтобы посмотреть, какова будет разница в производительности, но запрос был неудачным, поэтому я переключил его обратно на исходный, который я выбрал. Однако запрос по-прежнему не работает даже сейчас, когда экземпляр вернулся на исходный уровень AWS. Глядя на экземпляр в AWS CloudWatch monitoring, кажется, что подключение к базе данных остается активным только в течение 5 минут. Есть ли способ продлить это время?
Я использую DBeaver, AWS RDS и Postgresql.
Ответ №1:
Вы можете увеличить значение «tcp_keepalives_ilde» в группе параметров RDS, установите его в диапазоне 30-60 секунд. Согласно документации Postgres, указывает количество секунд бездействия, после которого TCP должен отправить клиенту сообщение keepalive.
Установка statement_timeout в вашем сценарии НЕ рекомендуется в соответствии с here . По умолчанию значение равно 0, а значение нуля (по умолчанию) отключает время ожидания.
В AWS RDS «tcp_keepalives_idle» является динамическим параметром, что означает, что он вступит в силу сразу после применения без необходимости перезагрузки экземпляров. Фактическая формулировка из документации AWS выглядит следующим образом: «Когда вы изменяете динамический параметр и сохраняете группу параметров БД, изменение применяется немедленно, независимо от параметра Применить немедленно»
В интересах других can ссылается на документацию AWS по созданию новой группы параметров, а затем возвращается к RDS, чтобы изменить экземпляр RDS для использования вновь созданной группы параметров.
Ответ №2:
Кажется, я решил свою проблему, включив параметр TCP keepalive каждые 60 секунд.
Перейдите в Amazon RDS> Группы параметров> Создать группу параметров Postgres> Выберите новую группу параметров> Нажмите Редактировать параметры> Фильтр для «живой» > Установите tcp_keepalives_idle равным 60 > Сохранить. Я также отфильтровал «тайм-аут» и установил statement_timeout равным 3600000, хотя в этом, возможно, не было необходимости.
Затем измените свою базу данных и примените к ней новую группу параметров. Возможно, вам потребуется перезагрузить экземпляр, чтобы заставить его применить.