“om.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception,但经过几次访问后又恢复正常” 问题:
通过以上信息的收集隐隐知道了问题所在(mysql经过28800秒也就是8个小时后关掉空闲链接,而c3p0是经过6000000妙才断开链接,就有可能出现c3po保持的连接有可能已经被mysql关掉了,自然就出现了hibernate不能打开session,并且都是第二天一早就出错);为了验证我的想法,决定在开发机上重现这个错误;首先在mysql配置文件my.ini 加上 wait_timeout=30 让mysql经过30妙就关掉链接,重启应用,第一次访问成功,等待一分钟后访问果然出现同样的错误,说明问题诊断正确,着手修改配置如下:
<property name="maxIdleTime">
<value>28000</value>
</property>
<property name="idleConnectionTestPeriod">
<value>28000</value>
</property>
配置解释:28000<28800 使c3p0 在mysql关不连接之前关闭自己持有的链接,配置idleConnectionTestPeriod 参数使c3po每隔28000检查已有的连接是否可用,这样应该确保拿到的连接都是可用的,如果还不放心可以加上 testConnectionOnCheckout参数每当拿出连接的时候就检查一下是否可以,这个可能会使mysql有一定的性能牺牲;
<property name="testConnectionOnCheckout">
<value>true</value>
</property>
分享到:
相关推荐
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
简单易懂,通过C3P0连接池实现对mysql数据库的添加数据。
java开发,数据库连接池c3p0所需jar包。
Java连接MySQL数据库查询。 使用C3P0连接池查询数据库,用log4j做日志。
在缓冲池中先创建指定数量的数据库连接,当有连接请求时就从缓冲池中取出处于“空闲”状态的连接,并将此连接标记为“忙碌”,直到该请求进程结束后,它所使用的连接才会重新回到“空闲”状态,并等待下一次请求调用...
c3p0连接池jar包
c3p0连接池连接数据实例和jar包,有详细的实例参考
java c3p0连接mysql数据库 java c3p0连接mysql数据库 java c3p0连接mysql数据库 可以直接运行
C3P0数据库连接池jar包和配置文件
包含了连接数据库连接池所需的大部分jar包
java语言连接Mysql数据库。通过Eclipse集成开发工具,编写java类文件,实现JDBC连接。 通过c3p0连接数据库的三种方法,包括xml文件、properties文件。
c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包
c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar
C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解
c3p0数据库连接池案例,java项目,例子结构清晰,适合新手学习
c3p0连接池配制文件..
c3p0连接池工具
MySQL数据库服务器下C3P0连接池的配置.pdf
使用C3P0连接池和DButils进Dao模式的数据库操作,使用的是C3p0数据库连接池+DButils+Dao模式