Proxool错误:org.logicalcobwebs.proxool.HouseKeeper sweep

在运行一个java应用时,发现出现如下错误。

org.logicalcobwebs.proxool.HouseKeeper sweep
警告: #0002 was active for 634297 milliseconds and has been removed automaticaly. The Thread responsible was named 'http-8080-1', but the last SQL it performed is unknown because the trace property is not enabled.

 

相应出错代码:

 

 

分析:

根据提示,程序中的数据库连接没有释放。由此想到可能在执行sql前有connection没有释放。检查,程序中获取并使用connection的地方病不多,检查后发现没有问题。同时也没有出现一个connection过多的进行获取getConnect()。

继续关注输出信息,发现rs.next()行出错,但并不是每行都出错。而是在循环到第7条左右时才发生异常。难道是连接超时了?检查配置文件,连接超时时间是5秒,和循环7次用时基本相当。将超时时间设大,出错的发生的时间依次推迟了。设置为足够循环完成的时间。异常消失。

 

原因:

connection为及时关闭。不过这是一个表面的原因。深层次的原因是

proxool中配置的maximum-active-time不仅对于空闲的connection生效,而且对于处于活动的connection同样生效。这样可能将活动中的connection强制关闭。

 

解决:

该类问题需要从这几个方面检查:

1, 是否有connection在使用完后未及时关闭。

2, 对于一个connection是否多次的进行了getConnection()操作。

3, 检查报错地方的connection的生存期其执行时间和proxool配置文件中的maximum-active-time值的差异。适当增大该值。如果一个connection的操作过程中耗费时间较长,可以通过临时变量来缩短connection的操作时间。如上例,可以定义string数组来存放,而后在用循环来处理这些string。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值