Назад | Перейти на главную страницу

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 для именованных каналов?

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

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

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