您当前的位置: 首页 >  apache

AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@7b3106ec)

发布时间:2018-03-27 16:22:26 ,浏览量:0

在有数据库操作的 Controller 的方法的前后都添加

System.out.println

在控制台中会看到两个输出中间多了一部分信息:

AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@7b3106ec)
   LogAbandoned: true
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 10

这是一个日志信息,由dbcp连接池输出。

在配置时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true 那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。 有点忘了。    logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。    在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。    以下是我的配置的properties文件:  #连接设置  jdbc.driverClassName=oracle.jdbc.driver.OracleDriver  jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER  jdbc.username=user  jdbc.password=pass  #  dataSource.initialSize=10  #  dataSource.maxIdle=20  #  dataSource.minIdle=5  #最大连接数量  dataSource.maxActive=50  #是否在自动回收超时连接的时候打印连接的超时错误  dataSource.logAbandoned=true  #是否自动回收超时连接  dataSource.removeAbandoned=true  #超时时间(以秒数为单位)  dataSource.removeAbandonedTimeout=180  #  dataSource.maxWait=1000 

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0462s