У меня есть небольшое приложение Grails, работающее на Tomcat в Ubuntu на VPS. Я использую MySql в качестве хранилища данных, и все работает нормально, если я не покидаю приложение более чем на полдня (8 часов?). Я провел некоторый поиск, и, очевидно, это значение по умолчанию wait_timeout
в mysql.cnf, поэтому через 8 часов соединение прекратит свое существование, но Tomcat не узнает, поэтому, когда следующий пользователь попытается просмотреть сайт, он увидит ошибку сбоя соединения. Обновление страницы исправит это, но я хочу полностью избавиться от ошибки. Для моей версии MySql (5.0.75) у меня есть только my.cnf, и он не содержит такого параметра. В любом случае изменение этого параметра не решит проблему.
Это Сообщение в блоге , кажется, сообщает о подобной ошибке, но я все еще не до конца понимаю, что мне нужно настроить, чтобы исправить это, и я также надеюсь, что есть более простое решение, чем другая треть тусовочная библиотека. Машина, на которой я работаю, имеет оперативную память 256 МБ, и я стараюсь, чтобы количество запущенных программ / служб было минимальным.
Что-то, что я могу настроить в Grails / Tomcat / MySql, чтобы это исчезло?
Заранее спасибо,
Гав
Из моей Каталины.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