Как указано в документации PostgreSQL JDBC :
loginTimeout = int
Укажите, как долго ждать установления соединения с базой данных.
Время ожидания указывается в секундах.
connectTimeout = int
Значение времени ожидания, используемое для операций с сокетами. Если подключение
к серверу уходит больше времени, чем это значение, соединение разрывается.
Время ожидания указывается в секундах, а нулевое значение означает, что оно
отключено.
socketTimeout = int
Значение времени ожидания, используемое для операций чтения сокетов. Если читать из
сервер занимает больше времени, чем это значение, соединение закрыто.
Это может быть использовано как для тайм-аута глобального запроса, так и для
метод обнаружения сетевых проблем. Тайм-аут указан в
секунд и значение ноль означает, что он отключен.
cancelSignalTimeout = int
Команда отмены отправляется вне полосы через собственное соединение, поэтому
Отмена сообщения может сама застрять. Это свойство управляет "подключиться
timeout "и" timeout сокета ", используемые для отмены команд.
указано в секундах. Значение по умолчанию составляет 10 секунд.
connectTimeout
и socketTimeout
- это тайм-ауты при работе с сокетами низкого уровня. connectTimeout
определяет время, необходимое для установления соединения через сокет TCP. Установление TCP-соединения не гарантирует вход в систему (он даже не гарантирует, что вы подключаетесь к серверу PostgreSQL, просто вы подключились к чему-то, что приняло ваше TCP-соединение). socketTimeout
определяет время, когда сокет может быть заблокирован в ожидании чтения из сокета. Это включает все чтения с сервера, не только во время соединения, но и во время последующего взаимодействия с сервером (например, выполнение запросов).
С другой стороны, loginTimeout
управляет операцией протокола PostgreSQL для подключения и аутентификации к серверу PostgreSQL. Это включает в себя установление TCP-соединения, за которым следует один или несколько обменов пакетами для установления связи и аутентификации на сервере PostgreSQL (я не знаком с подробностями протокола PostgreSQL, поэтому не могу быть очень конкретным).
Обмен этими пакетами может занять дополнительное время, или если вы подключились к чему-то, что не является сервером PostgreSQL, обмен пакетами может остановиться. Может быть возможно решить эту проблему с тщательным контролем как connectTimeout
, так и socketTimeout
, но нет никаких гарантий (например, обмен данными, но вход в систему никогда не завершается). Кроме того, поскольку socketTimeout
также управляет всеми другими операциями на соединении, вы можете установить его выше (например, для других операций, для получения ответа которых требуется много времени), чем вы готовы ждать входа в систему, чтобы полный.
cancelSignalTimeout
используется в качестве времени ожидания сокета соединения и отдельного соединения TCP, используемого для команд отмены.