[转帖]c3p0关于mysql8小时的问题_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2431 | 回复: 0   主题: [转帖]c3p0关于mysql8小时的问题        下一篇 
shijian111
注册用户
等级:新兵
经验:46
发帖:58
精华:0
注册:2012-2-15
状态:离线
发送短消息息给shijian111 加好友    发送短消息息给shijian111 发消息
发表于: IP:您无权察看 2014-12-23 15:32:35 | [全部帖] [楼主帖] 楼主

cjar包:c3p0-0.9.5-pre6.jar     mchange-commons-java-0.2.6.3.jar
背景:以前在使用ORM框架的情况下,使用连接池没出现过空闲连接超时的问题,现在新建个项目没什么框架,使用c3p0,代码如下:
Java代码 

 private static ComboPooledDataSource ds = null;
static {
      try {
            ds = new ComboPooledDataSource();
            ds.setDriverClass(Constant.DRIVER_CLASS_NAME);
            ds.setJdbcUrl(Constant.URL);
            ds.setUser(Constant.USERNAME);
            ds.setPassword(Constant.PASSWORD);
            ds.setMaxPoolSize(40);
            ds.setMinPoolSize(5);
            ds.setAutomaticTestTable("C3P0TestTable");
            ds.setIdleConnectionTestPeriod(1800);
            ds.setTestConnectionOnCheckin(true);
            ds.setTestConnectionOnCheckout(true);
            ds.setMaxIdleTime(25000);
      } catch (PropertyVetoException e) {
            gLog.error("ComboPooledDataSource", e);
      }
}
public static synchronized Connection getConn() {
      Connection con = null;
      try {
            con = ds.getConnection();
      } catch (SQLException e1) {
            gLog.error("getConn", e1);
      }
      return con;
}


有个线程用 getConn()获取连接后,长时间不进行数据库操作,隔天触发数据库操作时会报异常
Java代码  收藏代码

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Software caused connection abort: socket write error
STACKTRACE:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1554)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:144)
** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2652)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1554)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:144)


有个线程一直有进行数据库操作,则正常,因此判断是MYSQL8小时问题。但是代码里几个重要属性已经配置了,是否哪里还漏了,错了。
求教!

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论