首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

一个连接池的有关问题,请高手指教~ Cannot get a connection, pool exhausted

2012-03-15 
一个连接池的问题,请高手指教~~~ Cannot get a connection, pool exhausted一个连接池的问题,请高手指教~~

一个连接池的问题,请高手指教~~~ Cannot get a connection, pool exhausted
一个连接池的问题,请高手指教~~~ Cannot get a connection, pool exhausted


异常有这么几个。。。
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool exhausted
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:103)


Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:756)


根据异常,看出来是连接池耗尽。 

这个有什么办法解决吗? 框架是s2sh + freemark. 
用总监封装的 conn = DbHelper.getConnection(); 方法。jdbc操作的时候,一台机器开2-3个线程,0.1秒一次的频率访问的时候就出现连接池不够用。 

但是用hibernate 里面的方法调用,一台机器开5个线程0.1秒一次的频率访问 暂时没有问题。 

问题出在用jdbc操作sql的这些方法里面。 

哪个高手有办法解决这个连接配置问题吗? 感激不尽!~~



[解决办法]
检查下代码,每次用完连接后有没有主动关闭
[解决办法]
你总监写的只有创建连接,没有关闭连接吗?

hibernate的话,它自己会进行维护~

就像2楼说的,是没有关闭连接引起的连接耗尽
[解决办法]

探讨
你总监写的只有创建连接,没有关闭连接吗?

hibernate的话,它自己会进行维护~

就像2楼说的,是没有关闭连接引起的连接耗尽

[解决办法]
搞定了就好。
[解决办法]
5个线程0.1秒一次的频率访问,你这是用工具做的性能测试吗?

另外,还应该考虑连接失效的时间~
[解决办法]
result.setAutoCommit(false);
这里跑出来一个 异常,那么 conn 就永远不会被回收。。。。
很显然,有写conn 没有被关闭。
你可以用ThreadLocal 绑定conn , 测试下。。。

热点排行