保存时休眠超时

时间:2018-05-27 01:38:27

标签: java mysql hibernate

我有一个使用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 :(得分: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