MySQL в Windows - как мне установить wait_timeout для соединений с использованием именованных каналов?

Я использую базу данных MySQL, работающую на Windows, и по соображениям производительности я подключаюсь к ней по именованным каналам.

Приложение (Java), использующее базу данных (через Hibernate), может позволить соединению бездействовать в течение достаточно долгого времени, что приводит к сбою соединения со следующим сообщением:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: последний пакет, успешно полученный от сервера, был 33 558 297 миллисекунд назад. Последний пакет, успешно отправленный на сервер, был 33 558 297 миллисекунд назад. больше, чем сконфигурированное сервером значение wait_timeout. Чтобы избежать этой проблемы, следует рассмотреть возможность истечения срока действия и / или проверки допустимости соединения перед использованием в приложении, увеличения значений, настроенных сервером для тайм-аутов клиента, или использования свойства соединения Connector/J 'autoReconnect=true'.

autoReconnect к сожалению не имеет никакого эффекта (и ни один не делает autoReconnectForPools), но wait_timeout документы утверждают, что wait_timeout применяется только "к соединениям файлов сокетов TCP/IP и Unix, но не к соединениям, выполняемым через именованные каналы или разделяемую память".

Как я могу изменить wait_timeout для именованных труб?

1 ответ

Решение

В зависимости от того, как вы конфигурируете свой источник данных, вы можете указать такой параметр, как idle-timeout-minutes, Если wait_timeout были установлены на 5 минут, установлены idle-timeout-minutes до 4.

Для соединений MySQL можно указать только два значения времени ожидания: wait_timeout и interactive_timeout. interactive_timeout потенциально может также применяться к именованным каналам, если он подключен как клиент.

Если я правильно помню, если не указаны ни wait_timeout, ни interactive_timeout, по умолчанию используется значение 28800.

Другие вопросы по тегам