- 浏览: 127278 次
- 性别:
- 来自: 上海
最新评论
-
ranweizheng:
luokery 写道有失真...显然,存在失真是必然的,只是怎 ...
Java图片缩小后不失真的代码(缩略图) -
szhnet:
kree 写道szhnet 写道其实我在1楼说的不对,那个不能 ...
非阻塞通信,《Java网络编程精解》指误。 -
kree:
szhnet 写道其实我在1楼说的不对,那个不能用到达输入流的 ...
非阻塞通信,《Java网络编程精解》指误。 -
szhnet:
其实我在1楼说的不对,那个不能用到达输入流的未尾来理解。
非阻塞通信,《Java网络编程精解》指误。 -
leaow567:
同意楼上的观点
非阻塞通信,《Java网络编程精解》指误。
使用c3p0,偶尔会报异常:
ERROR Thread-4 com.feedsky.dao.AbstractMutiDbDAO - com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) at com.mysql.jdbc.Connection.execSQL(Connection.java:3170) at com.mysql.jdbc.Connection.execSQL(Connection.java:3099) at com.mysql.jdbc.Statement.executeQuery(Statement.java:1169) at com.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35) at com.feedsky.dao.AbstractMutiDbDAO.findBySQL(AbstractMutiDbDAO.java:34) at com.feedsky.dao.impl.SrcItemDAOImpl.findBySQL(SrcItemDAOImpl.java:326) at com.feedsky.dao.impl.SrcItemDAOImpl.loadByItemUuid(SrcItemDAOImpl.java:255) at com.feedsky.service.impl.SrcItemServiceImpl.loadByItemUuid(SrcItemServiceImpl.java:37) at com.feedsky.controller.SrcFeedController.saveSrcFeed(SrcFeedController.java:97) at com.feedsky.work.SrcStoreThread.saveSrcFeed(SrcStoreThread.java:174) at com.feedsky.work.SrcStoreThread.run(SrcStoreThread.java:53) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748) at java.lang.Thread.run(Thread.java:619) ** END NESTED EXCEPTION ** Last packet sent to the server was 176 ms ago. 2008-02-18 10:52:53 ERROR Thread-4 com.feedsky.work.SrcStoreThread - java.lang.NullPointerException 2008-02-18 10:52:53 INFO Thread-2 com.feedsky.dao.impl.SrcItemDAOImpl - com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) at com.mysql.jdbc.Connection.execSQL(Connection.java:3170) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235) at com.mchange.v2.c3p0.impl.NewProxyStatement.executeUpdate(NewProxyStatement.java:64) at com.feedsky.dao.impl.SrcItemDAOImpl.insert(SrcItemDAOImpl.java:178) at com.feedsky.service.impl.SrcItemServiceImpl.save(SrcItemServiceImpl.java:29) at com.feedsky.controller.SrcFeedController.saveSrcFeed(SrcFeedController.java:111) at com.feedsky.work.SrcStoreThread.saveSrcFeed(SrcStoreThread.java:174) at com.feedsky.work.SrcStoreThread.run(SrcStoreThread.java:53) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748) at java.lang.Thread.run(Thread.java:619) ** END NESTED EXCEPTION **
在google和javaeye搜索了下,做了如下处理,但是还是会报错。
public synchronized static DataSource createDataSource(String driver,String url,String username,String password) throws SQLException, ClassNotFoundException { Class.forName(driver); DataSource ds_unpooled = DataSources.unpooledDataSource(url,username,password); Map overrides = new HashMap(); //当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 overrides.put("acquireIncrement", 5); overrides.put("minPoolSize", 5); overrides.put("maxPoolSize", 10); //overrides.put("initialPoolSize",cfg.getMaxPoolSize()); overrides.put("maxStatements", 10000); //最大空闲时间,3600秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 overrides.put("maxIdleTime", 3600 ); overrides.put("automaticTestTable", "C3P0TestTable"); overrides.put("testConnectionOnCheckin", true); // 每60秒检查所有连接池中的空闲连接。Default: 0 overrides.put("idleConnectionTestPeriod",18000); overrides.put("testConnectionOnCheckout", true); //获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 //保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 //获取连接失败后该数据源将申明已断开并永久关闭。Default: false overrides.put("breakAfterAcquireFailure", true); //c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 //通过多线程实现多个操作同时被执行。Default: 3 overrides.put("numHelperThreads", 10); // create the PooledDataSource using the default configuration and our overrides DataSource ds_pooled = DataSources.pooledDataSource( ds_unpooled, overrides ); return ds_pooled; }
主要加了参数:
//如果设为true那么在取得连接的同时将校验连接的有效性。Default: false
testConnectionOnCheckin = true
//自动测试的table名称,c3p0将建一张名为C3P0TestTable的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
//属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。Default: null
automaticTestTable=C3P0TestTable
//每1800秒检查所有连接池中的空闲连接。Default: 0
idleConnectionTestPeriod = 1800
//最大空闲时间,3600秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
maxIdleTime = 3600
/**因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false */
testConnectionOnCheckout = true
另外:还在JDBC URL上面加一个autoReconnect=true 参数
而且mysql服务的wait_timeout和interactive_timeout的值都是172800,已经远远大于c3p0的maxIdleTime参数值
做了这些修改后,还是会报错,而且平均每个小时有8-10次这样的错误发生。不知道还有没有更好的解决办法?谢谢。
还有种可能,mysql承受不了太大压力时是不是也会报这种错误呢?
发表评论
-
c3p0详细配置
2010-06-08 16:10 1037<c3p0-config> <defaul ... -
Mysql数据库的高级查询 多表查询,联表查询
2010-06-08 16:08 3316最近在做一个PHP+MYSQL的项目,说实话,第一次呢 不断 ... -
MySQL Join详解
2010-06-08 14:55 959还是先 Create table 吧 create ... -
玩转MySQL的外键约束之级联删除篇
2010-06-08 14:51 1308如今,许多关系型数据库管理系统都提供了外键约束这一强大的功能特 ... -
mysql的java连接池,用openSTA测试50人并发访问一万次,没有出现问题,很好用
2010-06-08 14:41 1227package com.gosafari.service; ... -
最规范的java连接mysql的实例
2010-06-08 14:33 1454import java.sql.Connection; ... -
MySQL模糊查询语法(推荐)
2010-06-08 14:28 1747$sql="select * from table_ ... -
设计高效合理的MySQL查询语句讲解
2010-06-08 14:19 1187数据库系统是管理信息 ... -
完整的连接池类
2010-06-08 14:09 1016Oracle连接池需要odbc连 ... -
如何用SQLyog来分析MySQL数据库详解
2010-05-05 17:23 1259用SQLyog来分析MySQL数据 ... -
MySQL数据库两台主机同步实战
2010-05-05 17:20 2187MySQL支持单向、异步复制,复制过程中一个服务器充当 ... -
mysql二进制增量备份
2010-05-05 17:18 2072mysqlbinlog -u root -p*** v:/ ... -
MySQL服务器的log-bin功能
2010-05-05 17:13 2234装mysql,运行一段时间后,在mysql目录下出现一堆类似m ... -
mysql事务处理
2010-05-05 17:10 6529由于项目设计里面,牵扯到了金钱的转移,于是就要用到MYSQL的 ... -
深入浅出mysql事务处理和锁机制
2010-05-05 17:09 11311. 事务处理和并发 ... -
MYSQL数据库常用命令集合
2010-05-05 16:37 951Mysql数据库是一个多用户,多线程的关系型数据库,是一个客户 ... -
java.net.SocketException: Broken pipe /Mysql在经过8小时不使用后会自动关闭已打开的连接
2010-05-05 16:34 2135MySQL 的默认设置下,当一个连接的空闲时间超过8小时 ... -
Mysql Date_format 及时间相关用法
2010-05-05 14:16 23750下面的查询选择了所有 ...
相关推荐
Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException The last packet successfully received from the server was 47,795,922 milliseconds ago. The last packet sent successfully to the server was...
com.mysql.jdbc.CommunicationsException Communications link failure due to underlying exception:
1、写在开头 标题之前我想说一下Linux的mysql真的实在是太坑了。太坑了。总是会出现这样那样的你想不到的问题。崩溃了。首先来罗列一下我遇到过的...Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcepti
1、Caused by: com.MySQL.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 56,201,339 milliseconds ago. The last packet sent successfully to the...
如果单独写一个类,并编译执行访问数据库,正常,但是用web应用来调这个类连接数据库,就会出现错误:com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ...