В моем приложении я установил время ожидания соединения и команды на 10 минут (на стороне клиента).
Чем мое приложение выполняет простой запрос: SELECT pg_sleep(65)
На некоторых серверах он работает нормально, но другие серверы закрывают соединение через 60 секунд.
Может ли это быть какая-то конфигурация сервера PostgreSQL, которая ограничивает время ожидания и игнорирует настройки моего клиента?
postgresql
timeout
Анджей Гис
источник
источник
SHOW statement_timeout;
Ответы:
Да возможно
В документации упоминаются две настройки (впервые
idle_in_transaction_session_timeout
для версии 9.6x)statement_timeout
(Целое число)idle_in_transaction_session_timeout
(Целое число)Важно не устанавливать
statement_timeout
в postgresql.conf, если вы не хотите развлечений.Вот пример того, как это работает
источник
Не из коробки. Было бы довольно легко скомпилировать собственный сервер, который игнорировал бы ваши настройки.
Но гораздо более вероятно, что ваши соединения разрываются межсетевым экраном или шлюзом, который не любит пустые соединения.
Если у вас есть доступ к лог-файлу сервера, это должно дать вам хорошую подсказку. Если клиент говорит, что сервер неожиданно закрыл соединение, а сервер говорит, что клиент неожиданно закрыл соединение, то это, вероятно, что-то среднее между клиентом и сервером, который фактически разрывает соединение.
источник
Да, это возможно. Есть несколько параметров подключения, которые вам нужно установить.
Пожалуйста, обратитесь по ссылке ниже. https://jdbc.postgresql.org/documentation/head/connect.html
loginTimeout connectTimeout socketTimeout cancelSignalTimeout
источник