Таймаут гибернации при сохранении - PullRequest
0 голосов
/ 27 мая 2018

У меня есть приложение, которое использует 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");

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

1 Ответ

0 голосов
/ 27 мая 2018

У нас была такая же проблема некоторое время назад.Я искал в истории, и хотя вы можете сохранить значения, которые у вас есть, вам нужно добавить это: <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 .

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