MENU

解决MySQL与c3p0的8小时丢连接问题

问题概述

开发的一个内部系统在测试服务器上跑了一个礼拜,发现有时候系统长时间闲置后登录会出现错误,报错主要内容如下:

The last packet successfully received from the server was XXX milliseconds ago. The last packet sent successfully...

但返回登录页面再次尝试登录就不会报错,经过复现后发现是因为c3p0与MySQL存在8小时丢连接的问题。

解决方案

管理员要求不对数据库服务器的配置进行修改,所以只能修改c3p0配置文件。

jdbc.properties

#c3p0反空闲设置,防止8小时失效问题28800
#idleConnectionTestPeriod要小于MySQL的wait_timeout
jdbc.c3p0.testConnectionOnCheckout=false
jdbc.c3p0.testConnectionOnCheckin=true
#向mysql发包测试存活的间隔(秒)
jdbc.c3p0.idleConnectionTestPeriod=30
jdbc.c3p0.maxIdleTime=3600

spring-mybatis.xml

<!-- 数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <!-- 其他配置项省略 -->
    <property name="testConnectionOnCheckin" value="${jdbc.c3p0.testConnectionOnCheckin}"/>
    <property name="testConnectionOnCheckout" value="${jdbc.c3p0.testConnectionOnCheckout}"/>
    <property name="idleConnectionTestPeriod" value="${jdbc.c3p0.idleConnectionTestPeriod}"/>
    <property name="maxIdleTime" value="${jdbc.c3p0.maxIdleTime}"/>
</bean>

文章标题:解决MySQL与c3p0的8小时丢连接问题
如果文中内容侵犯了您的权益,请及时与博主取得联系进行删除!
本站文章未经许可禁止转载,本文地址:https://blog.wanvale.com/archives/38/

Last Modified: June 20, 2020
Archives QR Code Tip
QR Code for this page
Tipping QR Code