论坛首页 入门讨论版 Spring

非常奇异的数据库连接reject异常

浏览 1281 次
该帖已经被评为新手帖
作者 正文
时间:2007-02-08 关键字: 奇怪的数据库连接异常
在实际项目开发测试过程中发现如下问题:测试一段时间后数据库拒绝连接抛出下面第二条中的异常,查看数据库,发现因为数据库的连接session很多,有时候达到300,并且都是inactive状态。
在我们的程序中是都是用spring的 JDBCTemplate,并且查看了spring的excute方法,它每次使用后都会关闭连接。为什么关闭的连接在数据库里面不会回收??

这个问题头痛了好几天了,现在还没解决,请们给偶出出主意。。。。。。。

下面是问题描述及其问题出现的操作说明
1 数据库连接及其连接池配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${jdbc.driverClassName}</value>
</property>
<property name="url"><value>${jdbc.url}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>

<property name="maxActive"><value>40</value></property>
<property name="maxIdle"><value>30</value></property>
<property name="maxWait"><value>10000</value></property>
<property name="defaultAutoCommit"><value>true</value></property>

</bean>

2 多次在web应用中执行插入数据操作后,出现如下异常:
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC co
nnection; nested exception is java.sql.SQLException: Io 异常: Connection refused
(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12518)(ERROR_STACK=(ERROR=(CODE=12518)
(EMFI=4))(ERROR=(CODE=12560)(EMFI=4))))
java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169
869568)(ERR=12518)(ERROR_STACK=(ERROR=(CODE=12518)(EMFI=4))(ERROR=(CODE=12560)(E
MFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv
erConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable
ConnectionFactory.java:290)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericOb
jectPool.java:771)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSo
urce.java:95)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource
.java:540)

3 出现异常后查看数据库的session数目:122

4 为了测试,重复以上操作,观察到数据库的session不停的增加,并且其状态都是inactive的;

最初没有配置数据库连接池的最大数,以为是这个问题导致每次insert都重新建立连接,但是设置了最大数后,观察数据库的session还是跟以前一样增加。


待中。。。。。。。。。。。。。。。。。。。。。。。。。
   
时间:2007-02-08
应该是connection timeout没有设置!不过dbcp是我见过的bug最多的,虽然jakarta的东西我用了很多,但是只有一个collection比较好,其他的都问题多多!有的自己的Test都跑不完!
   
0 请登录后投票
时间:2007-02-13
问题解决了,问题虽然不是因为连接池,但是我觉得这个第三方的连接池有些问题。

谢谢大家关注。
   
0 请登录后投票
时间:2007-03-20
楼上的仁兄,我刚测试了你的,确实存在这个问题,请问你是怎么解决的呀?
   
0 请登录后投票
时间:2007-04-01
是啊,能否告知是怎么解决的,我也碰到了类似的问题,还没有头绪:(
   
0 请登录后投票
论坛首页 入门讨论版 Spring

跳转论坛:
JavaEye推荐