Таймаут гибернации при сохранении

0

У меня есть приложение, которое использует MySql для сохранения в таблицу (эта таблица имеет 2 поля JSON, и один из них может принимать большой вход). Время от времени в производстве у меня возникает следующая ошибка:

SqlExceptionHelper - последний пакет, успешно полученный с сервера, был 71 290 382 миллисекунды назад.
Последний пакет, успешно отправленный на сервер, составил 71 290 384 миллисекунды. больше, чем заданное сервером значение "wait_timeout". Перед использованием в своем приложении вы должны рассмотреть вопрос об истечении срока действия и/или проверять достоверность подключения, увеличивая настроенные сервером значения для тайм-аутов клиента или используя свойство соединения Connector/J "autoReconnect = true", чтобы избежать этой проблемы.

Я не понимаю, почему это происходит, поскольку я никогда не сталкивался с этой проблемой. Это конфигурация, которую я сейчас имею:

cfg.setProperty("hibernate.c3p0.min_size", "5")
                .setProperty("hibernate.c3p0.max_size", "20")
                .setProperty("hibernate.c3p0.timeout", "30000")
                .setProperty("hibernate.c3p0.max_statements", "50")
                .setProperty("hibernate.c3p0.idle_test_period", "3000")
                .setProperty("hibernate.connection.autoReconnect", "true")
                .setProperty("hibernate.connection.autoReconnectForPools", "true");

Я что-то пропустил?.

Теги:
hibernate

1 ответ

1
Лучший ответ

У нас была такая же проблема. Я искал в истории, и, хотя вы можете сохранить значения, которые у вас есть, вам нужно добавить следующее: <property name="connection.is-connection-validation-required">true</property>. Это сделало трюк для нашего артефакта, но вам нужно будет проверить свое дело, так как у вас могут быть другие настройки.

В качестве примечания, я считаю, что это должно быть:

.setProperty("connection.autoReconnect", "true")
.setProperty("connection.autoReconnectForPools", "true");

У нас также был файл c3p0.properties:

c3p0.preferredTestQuery=select 1 from dual
c3p0.maxConnectionAge=3600
c3p0.testConnectionOnCheckin=false
c3p0.testConnectionOnCheckout=true
c3p0.acquireRetryDelay=1500
c3p0.acquireRetryAttempts=15
c3p0.breakAfterAcquireFailure=false
c3p0.idleConnectionTestPeriod=200

Обратите внимание, в частности, на testConnectionOnCheckout.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню