#database #postgresql #azure #ubuntu
#База данных #postgresql #azure #ubuntu
Вопрос:
Я немного новичок в postgresql db. Я выполнил настройку через Azure Cloud для моей базы данных PostgreSQL DB.
Это компьютер Ubuntu 18.04 LTS (4vCPU, 8 ГБ оперативной памяти) с версией PostgreSQL 9.6.
Проблема, которая возникает, заключается в том, что соединение с базой данных PostgreSQL остается незанятым в течение некоторого времени, скажем, от 2 до 10 минут, затем соединение с базой данных не отвечает, поэтому оно не выполняет запрос и продолжает обработку запроса.
То же самое происходит с моим приложением JAVA Spring-boot. Соединение не отвечает, и запрос продолжает обрабатываться.
Это происходит случайным образом, так что время не отслеживается, иногда это происходит через 2 минуты, иногда через 10 минут, а иногда и нет.
Я пробовал использовать параметры файла конфигурации PostgreSQL. Я пытался:
tcp_keepalive_idle, tcp_keepalive_interval, tcp_keepalive_count.
Также параметры statement_timeout и session_timeout, но они все равно не меняются.
Любое предложение или помощь были бы благодарны.
Спасибо
Комментарии:
1. Удалось ли это устранить? Вы можете изучить проблему с журналами сервера PostgreSQL: журналы сервера в базе данных Azure для PostgreSQL — learn.microsoft.com/en-us/azure/postgresql/concepts-server-logs
2. Я не использую базу данных Azure для службы PostgreSQL. Я запускаю PostgreSQL на виртуальной машине. И я видел журналы, в которых есть только одна строка «не удалось получить данные от клиента: время ожидания соединения истекло», вот и все, больше там ничего нет.
3. Вы нашли решение своей проблемы, мы сталкиваемся с точно такой же проблемой, мы не остались в стороне от поиска основной причины?
Ответ №1:
Если вы настраиваете соединение с БД PostgreSQL на виртуальной машине Azure, вы должны знать, что существуют тайм-ауты несвязанных и исходящих подключений. Согласно https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#idletimeout Время ожидания исходящих соединений составляет 4 минуты. Это время ожидания не регулируется. Для входящего тайм-аута есть возможность изменить на портале Azure.
Мы столкнулись с аналогичной проблемой и смогли решить ее на стороне клиента. Мы изменили конфигурацию Hikari по умолчанию при весенней загрузке следующим образом:
хикари:
-
время ожидания соединения: 20000
-
время ожидания проверки: 20000
-
время ожидания: 30000
-
максимальный срок службы: 40000
- минимальное время простоя: 1
- максимальный размер пула: 3
- подключение-тест-запрос: ВЫБЕРИТЕ 1
- подключение-инициализация-sql: ВЫБЕРИТЕ 1
Комментарии:
1. Спасибо, что поделились! Я попробовал эти настройки, и они улучшили ситуацию, но не полностью решили проблемы с подключением для меня полностью.