Тайм-аут соединения с MySQL - PullRequest
2 голосов
/ 07 апреля 2010

Я запускаю программу на сервере Apache Tomcat, которая должна быть включена постоянно, но каждое утро (клиентская часть не доступна ночью) я получаю сообщение об ошибке (в консоли Apache Tomcat), что сервер MySQL выключен. Так есть ли способ предотвратить это? Заранее спасибо!

Ответы [ 3 ]

10 голосов
/ 11 апреля 2010

Да, у меня была такая же проблема. Попробуйте добавить запрос проверки к вашему источнику данных.

Вот как я определил мое:

<Resource auth="Container"
          type="javax.sql.DataSource"
          name="jdbc/gporder"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost/mydb"
          maxActive="10"
          maxIdle="5"
          validationQuery="SELECT 1"
          testOnBorrow="true"
          testWhileIdle="true"
          timeBetweenEvictionRunsMillis="10000"
          minEvictableIdleTimeMillis="60000"
          username="..." password="..."/>
9 голосов
/ 07 апреля 2010

сервер mysql прерывает соединение через некоторое время, по умолчанию это 28800 секунд, скорее всего, этот тайм-аут вы используете.

Вы можете просто дать команду драйверу mysql переподключиться в случае потери соединения, добавив параметр autoreconnect = true в URL-адрес jdbc, например, jdbc:mysql://localhost/mydb?autoreconnect=true

1 голос
/ 07 апреля 2010

Полагаю, вы открываете соединения прямо в коде своих веб-приложений. Вы можете попытаться ввести пул соединений , используя тайм-аут, соединение должно быть восстановлено.

Если это не поможет, спросите администратора сети, есть ли у него фильтры с отслеживанием состояния, которые обнаруживают таймауты (пока ваш клиент не используется) и закрывают соединение.

Если вы используете пул базы данных, такой как c3p0 или dbcp, посмотрите в его документации, должны быть настройки для настройки времени простоя или периодической проверки соединения (что будет держать соединение открытым, а не время его отключения). на стороне сервера)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...