У меня есть небольшое приложение grails, работающее на Tomcat в Ubuntu на VPS. Я использую MySql в качестве своего хранилища данных, и все работает нормально, если я не выхожу из приложения более полудня (8 часов?). Я сделал несколько поисков и, по-видимому, это по умолчанию wait_timeout
в mysql.cnf, поэтому через 8 часов соединение будет умирать, но Tomcat не будет знать этого, когда следующий пользователь попытается просмотреть сайт, он увидит ошибку сбоя подключения. Обновление страницы исправит это, но я хочу полностью избавиться от ошибки. Для моей версии MySql (5.0.75) у меня есть только my.cnf, и он не содержит такого параметра. В любом случае изменение этого параметра не решит проблему.
Этот Сообщение в блоге, похоже, сообщает об аналогичной ошибке, но я до сих пор не совсем понимаю, что мне нужно настроить, чтобы получить это исправленное и также я надеюсь, что есть более простое решение, чем другая сторонняя библиотека. У машины, на которой я запущен, есть RAM 256 МБ, и я пытаюсь свести к минимуму количество программ/служб.
Есть ли что-то, что я могу настроить в Grails/Tomcat/MySql, чтобы уйти?
Спасибо заранее,
Гав
От моего Catalina.out;
2010-04-29 21:26:25,946 [http-8080-2] ERROR util.JDBCExceptionReporter - The last packet successfully received from the server was 102,906,722 milliseconds$
2010-04-29 21:26:25,994 [http-8080-2] ERROR errors.GrailsExceptionResolver - Broken pipe
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
...
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter - Already closed.
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter - Already closed.
2010-04-29 21:26:26,017 [http-8080-2] ERROR servlet.GrailsDispatcherServlet - HandlerInterceptor.afterCompletion threw exception
org.hibernate.exception.GenericJDBCException: Cannot release connection
at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Already closed.
at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:84)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
... 1 more