保存时休眠超时

afdcj2ne  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(392)

我有一个应用程序,它使用mysql保存到一个表中(这个表有2个json字段,其中一个可以接收大量输入)。在生产过程中,我时不时会遇到以下错误:
sqlexceptionhelper-从服务器成功接收的最后一个数据包是71290382毫秒前。
最后一个成功发送到服务器的数据包是71290384毫秒前。长于服务器配置的值“wait\u timeout”。您应该考虑在应用程序中使用之前终止和/或测试连接有效性,增加服务器为客户端超时配置的值,或者使用连接器/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");

我错过什么了吗?。

drkbr07n

drkbr07n1#

不久前我们也有同样的问题。我在历史记录中搜索,虽然可以保留现有的值,但需要添加以下值: <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

特别注意测试连接检查。

相关问题