Поделиться через


Общие сведения о свойствах времени ожидания в драйвере JDBC

Скачать драйвер JDBC

Параметры времени ожидания в драйвере JDBC можно использовать для определения приоритета реагирования приложений. По умолчанию большая часть времени ожидания драйвера определяет приоритет ожидания результата, чтобы обеспечить согласованность данных. Убедитесь, что вы выбираете время ожидания, соответствующие потребностям приложения.

Для начального подключения loginTimeout используется:

  • loginTimeout — это время в секундах, когда драйвер ожидает установления подключения к серверу. Если этот объем превышен, возвращается ошибка, и открытое подключение не установлено. Нулевое значение указывает, что время ожидания по умолчанию — это время ожидания системы по умолчанию, которое составляет 30 секунд в версиях 11.2 и выше. Для версий 10.2 и ниже время ожидания по умолчанию составляет 15 секунд. Любое ненулевое значение — это количество секунд, которое драйвер должен ожидать до истечения времени ожидания сбоя подключения. Если у вас постоянно возникают проблемы с установкой подключения к драйверу JDBC, может потребоваться увеличить это время ожидания до 90 или даже 120 секунд.

После установки queryTimeoutcancelQueryTimeoutподключения , и lockTimeout используются во время выполнения инструкций. socketTimeout используется для любого взаимодействия драйвера с сервером.

  • queryTimeout — это время, в секундах, драйвер будет ждать после отправки команды выполнения на сервер, чтобы получить ответ от сервера с данными. Если это время превышено, команда отменяется. Превышение этого времени ожидания не закрывает подключение. Значение по умолчанию — 1, что означает бесконечное время ожидания.
  • cancelQueryTimeout — это время, в секундах, драйвер ожидает подтверждения queryTimeout отмены с сервера, прежде чем принудительно завершать или закрывать соединение. То есть драйвер ожидает общего количества cancelQueryTimeout плюс queryTimeout секунд, прежде чем соединение будет закрыто. Установка этого времени ожидания для ненулевого значения гарантирует, что приложения могут оставаться адаптивными, если сбой сети или связи с сервером, когда запрос истек. Значение по умолчанию для этого свойства — -1, которое является бесконечным временем ожидания.
  • lockTimeout — это время ожидания освобождения блокировки в случаях, когда выполняется инструкция блокировки. Превышение этого времени ожидания не приводит к закрытию подключения. Значение по умолчанию для этого свойства — -1, которое является бесконечным временем ожидания.
  • socketTimeout применяется ко всем связям сокета с сервером. Если сервер перестает работать с драйвером, либо не признавая или отвечая на данные, драйвер ожидает значения socketTimeout , прежде чем он закрывает подключение. Установка этого времени ожидания ненулевого значения гарантирует, что приложения могут оставаться адаптивными, если с сервером произошел сбой сети или связи. Значение по умолчанию равно 0, что означает бесконечное время ожидания. Убедитесь, что это socketTimeout больше, чем queryTimeout избежать исключений времени ожидания сокета во время queryTimeout окна. Аналогичным образом убедитесь, что это socketTimeout больше, чем cancelQueryTimeout избежать исключений cancelQueryTimeout времени ожидания сокета во время окна.

Разумные значения времени ожидания для приложения зависят от приоритетов приложения. Установка более низких значений времени ожидания определяет скорость реагирования приложения на согласованность данных. Когда достигается время ожидания, приложениям необходимо решить лучший курс действий. Это решение основано на выполняемом действии базы данных. Например, для SELECT инструкции решение может сообщить об ошибке пользователю или повторно подключиться и повторить попытку. Для INSERT или UPDATE инструкций это решение может отличаться.

Для адаптивного приложения loginTimeout следует queryTimeout задать относительно низкие значения. Аналогичным образом следует также задать низкое значение, cancelQueryTimeout чтобы драйвер не ждал слишком долго, чтобы сервер признал отмену запроса при queryTimeout превышении. Наконец, socketTimeout следует настроить защиту от драйвера, ожидая слишком долго во время любого сценария, когда подключение к серверу нарушено (прерывание сети, сбой сервера и т. д.).

Сводка свойств

Свойство Description По умолч. Результат подключения
loginTimeout Время в секундах, по истечении которого драйвер инициирует превышение времени ожидания неудачного подключения. 30 секунд [11.2+],
в противном случае 15 секунд
Закрытое подключение
queryTimeout Количество секунд, ожидающих отмены запроса. -1 [бесконечное время ожидания] Открытие подключения
cancelQueryTimeout Количество секунд, ожидающего подтверждения отмены QueryTimeout. -1 [бесконечное время ожидания] Закрытое подключение
lockTimeout Число миллисекунда, ожидающее, прежде чем база данных возвращает ошибку времени ожидания блокировки. -1 [бесконечное время ожидания] Открытие подключения
socketTimeout Количество миллисекунда, ожидающее чтения или записи сокета. Ноль [бесконечное время ожидания] Закрытое подключение

См. также

Настройка свойств подключения