Почти такая же легендарная ошибка для MySQL, как и знаменитая ошибка 1045.
Ошибка связи проявляется в том, что после некоторого периода бездействия первый запрос заканчивается с ошибкой. Все последующие - работают как ни в чем ни бывало. Причина - загадочная попытка драйвера MySQL переиспользовать уже ни на что ни годные jdbc connections.
Обновления JDBC драйверов - не помогают. А помогло вот что - добавить к описанию источника данных (JDBC URL) следующие параметры:
autoReconnect=true
autoReconnectForPools=true
(по умолчанию оба значения - false)
4 comments:
Почитал доки по нему - не советуют его использовать...
А вы каким JDBC пулом пользуетесь?
BoneCP, DBCP, c3p0 позволяют периодически проверят Connection (e.g. 'select 1' делать) и кроме того позволяют указать максимальное время жизни Connection после которого её принудительно заменят на новую свежую.
Я перепробовал все пулы, лучший
http://jolbox.com/
Вот мои настройки "по умолчанию"
http://apr.hg.sourceforge.net/hgweb/apr/apr/file/365dfccde3de/src/main/resources/dataSourceBase.xml
testOnBorrow="true" validationQuery="SELECT 1"
для datasource
Неужели с такой агрессивной опцией нарывались на ошибку?
DBCP же тестирует Connection при каждому получении из пула
при малом трафике - да. Слишком аггресивно все закэшировано ...
Post a Comment