Sun Oct 16 10:44:23 CST 2011 WARN: Caught while disconnecting...
EXCEPTION STACK TRACE:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Socket input is already shutdown
STACKTRACE:
java.net.SocketException: Socket input is already shutdown
at java.net.Socket.shutdownInput(Socket.java:1381)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1686)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4388)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2654)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1476)
at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(DefaultConnectionTester.java:73)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:374)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishIdleResource(C3P0PooledConnectionPool.java:310)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1999)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
** END NESTED EXCEPTION **RT,短暂的出现了几次异常,然后服务正常,从日志上看未出现错误,服务仍能正确访问
EXCEPTION STACK TRACE:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Socket input is already shutdown
STACKTRACE:
java.net.SocketException: Socket input is already shutdown
at java.net.Socket.shutdownInput(Socket.java:1381)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1686)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4388)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1368)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2654)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2570)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1476)
at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(DefaultConnectionTester.java:73)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:374)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishIdleResource(C3P0PooledConnectionPool.java:310)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1999)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
** END NESTED EXCEPTION **RT,短暂的出现了几次异常,然后服务正常,从日志上看未出现错误,服务仍能正确访问
com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1686)在你的quit方法中,Socket input流已经关闭了,你可以先判断是否关闭,再使用你的方法。
这句at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection
看看是不是因为你的c3p0连接池的空闲连接时间超时后自动关闭连接了。。然后引起了socket连接状态或取数据异常。
迷糊中,不过观察了一天,服务没有异常
2.减少Connection pools中connection的lifetime。
3.测试Connection pools中connection的有效性。 DBCP增加以下配置信息:1.//set to 'SELECT 1'
2.validationQuery = "SELECT 1"
3.//set to 'true'
4.testWhileIdle = "true"
5.//some positive integer
6.timeBetweenEvictionRunsMillis = 3600000
7.//set to something smaller than 'wait_timeout'
8.minEvictableIdleTimeMillis = 18000000
9.//if you don't mind a hit for every getConnection(), set to "true"
10.testOnBorrow = "true" C3P0增加以下配置信息:
1.//获取connnection时测试是否有效
2.testConnectionOnCheckin = true
3.//自动测试的table名称4.automaticTestTable=C3P0TestTable5.//set to something much less than wait_timeout, prevents connections from going stale
6.idleConnectionTestPeriod = 18000
7.//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out
8.maxIdleTime = 25000
9.//if you can take the performance 'hit', set to "true"
10.testConnectionOnCheckout = true