C3P0下连接超时总结

阅读: 评论:0

C3P0下连接超时总结

C3P0下连接超时总结

Mysql服务器默认的“wait_timeout”是8小时【也就是默认的值默认是28800秒】,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。
wait timeout的值可以设定,但最多只能是2147483,不能再大了。也就是约24.85天

这个参数大致的意思是这样:当一个客户端连接到MySQL数据库后,如果客户端不自己断开,也不做任何操作,MySQL数据库会将这个连接保留"wait_timeout"这么长时间(单位是s,默认是28800s,也就是8小时),超过这个时间之后,MySQL数据库为了节省资源,就会在数据库端断开这个连接;当然,在此过程中,如果客户端在这个连接上有任意的操作,MySQL数据库都会重新开始计算这个时间。

这么看来,发生上面Exception的原因就是因为我的服务器和MySQL数据库的连接超过了”wait_timeout"时间,MySQL服务器端将其断开了,但是我的程序再次使用这个连接时没有做任何判断,所以就挂了。

异常日志如下:

[java]  view plain copy
  1. Caused by: org.hibernate.TransactionException: JDBC begin transaction failed:  
  2.         at ansaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:76) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  3.         at ansaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  4.         at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1392) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  5.         at hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:473) ~[spring-orm-3.2.6.RELEASE.jar:3.2.6.RELEASE]  
  6.         ... 15 more  
  7. Caused by: ptions.jdbc4.CommunicationsException: Communications link failure  
  8. The last packet successfully received from the server was 3,599,995 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago.  
[java]  view plain copy
  1. Caused by: ptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 22,312,103 milliseconds ago.  The last packet sent successfully to the server was 22,312,105 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.  
  2.         at wInstance(Unknown Source) ~[?:?]  
  3.         at wInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_65]  
  4.         at wInstance(Constructor.java:526) ~[?:1.7.0_65]  
  5.         at sql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  6.         at sql.ateCommunicationsException(SQLError.java:1121) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  7.         at sql.jdbc.MysqlIO.send(MysqlIO.java:3941) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  8.         at sql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2551) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  9.         at sql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  10.         at sql.SQL(ConnectionImpl.java:2812) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  11.         at sql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5339) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  12.         at hange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:912) ~[c3p0-0.9.2.1.jar:0.9.2.1]  
  13.         at ansaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:72) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  14.         at ansaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  15.         at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1392) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  16.         at hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:473) ~[spring-orm-3.2.6.RELEASE.jar:3.2.6.RELEASE]  
  17.         ... 21 more  
  18. Caused by: java.SocketException: 断开的管道  
  19.         at java.SocketOutputStream.socketWrite0(Native Method) ~[?:1.7.0_65]  
  20.         at java.SocketOutputStream.socketWrite(SocketOutputStream.java:113) ~[?:1.7.0_65]  
  21.         at java.SocketOutputStream.write(SocketOutputStream.java:159) ~[?:1.7.0_65]  
  22.         at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[?:1.7.0_65]  
  23.         at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) ~[?:1.7.0_65]  
  24.         at sql.jdbc.MysqlIO.send(MysqlIO.java:3922) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  25.         at sql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2551) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  26.         at sql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  27.         at sql.SQL(ConnectionImpl.java:2812) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  28.         at sql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5339) ~[mysql-connector-java-5.1.26-bin.jar:?]  
  29.         at hange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:912) ~[c3p0-0.9.2.1.jar:0.9.2.1]  
  30.         at ansaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:72) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  31.         at ansaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  32.         at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1392) ~[hibernate-core-4.1.7.Final.jar:4.1.7.Final]  
  33.         at hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:473) ~[spring-orm-3.2.6.RELEASE.jar:3.2.6.RELEASE]  
  34.         ... 21 more  


以下是我做的C3P0配置,问题解决:

[html]  view plain copy
  1. <bean id="dataSource" class=&#hange.v2.c3p0.ComboPooledDataSource"  
  2.         destroy-method="close">  
  3.         <property name="jdbcUrl" value="jdbc:mysql://192.168.1.21:3306/game_admin?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"/>  
  4.         <property name="driverClass" value=&#sql.jdbc.Driver"/>  
  5.         <property name="user" value="linyu"/>  
  6.         <property name="password" value="com.123"/>  
  7.         <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->   
  8.         <property name="initialPoolSize" value="2"/>  
  9.         <!-- 连接池中保留的最小连接数,默认为:3-->   
  10.         <property name="minPoolSize" value="2"/>  
  11.         <!--连接池中保留的最大连接数。默认值: 15 -->     
  12.         <property name="maxPoolSize" value="15"/>  
  13.         <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->     
  14.         <property name="acquireIncrement" value="2"/>  
  15.         <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次-->     
  16.          <property name="acquireRetryAttempts" value="0"/>    
  17.          <!--重新尝试的时间间隔,默认为:1000毫秒-->     
  18.           <property name="acquireRetryDelay" value="1000" />    
  19.          <!--最大空闲时间,3600秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->     
  20.         <property name="maxIdleTime" value="3600"/>  
  21.          <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0-->     
  22.         <property name="maxStatements" value="0"/>  
  23.          <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->     
  24.         <property name="maxStatementsPerConnection" value="0"/>  
  25.         <!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。测试的表必须在初始数据源的时候就存在。Default: null-->  
  26.         <property name="preferredTestQuery" value="select 1"/>  
  27.          <!--每1800秒检查所有连接池中的空闲连接。Default: 0 -->  
  28.         <property name="idleConnectionTestPeriod" value="1800"/>  
  29.         <!-- 获取连接时测试有效性,每次都验证连接是否可用 -->  
  30.         <property name="testConnectionOnCheckout" value="false"/>  
  31.     </bean></span>  

配置是否生效请参考&#hange.v2.c3p0.ComboPooledDataSource 这个类

参考:

使用Hibernate连接MySQL数据库,MySQL连接超时断开的问题

c3p0 - JDBC3 Connection and Statement Pooling


转载出处:

本文发布于:2024-01-29 15:50:19,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170651462616373.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23