解决Tomcat数据连接池无法释放

文章讲述了作者在解决公司检测中心报表系统SMC用户无法登录问题时,发现是由于Tomcat连接池连接数过高且无法释放导致。通过使用探测工具probe,确定了问题在于数据库连接数超过预设的最大连接数。在调整连接池配置文件context.xml,特别是设置removeAbandoned等相关参数后,成功解决了连接池无法释放的问题。作者分享了配置参数的详细说明,强调了适当设置maxIdle、maxActive和removeAbandonedTimeout的重要性,并提到了logAbandoned参数在调试时的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。


今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。

简单分析了一下,每次Reload一下就能解决无法登录的情况,自然而然就想到是不是session有问题呢?于是到Tomcat的manager界面看了下,发现并没有出现session粘滞暴涨的情况。

本来可以打开jconsole看看的,正好想起了之前用过的Tomcat检测工具:probe,于是直接从其他机器上scp了一个probe.war,丢到了webapps下面自动部署。

部署完之后,打开了probe网页管理后台发现smc项目的实时数据库连接数很高,而且只增不减!这个系统的数据池大小设置为200,此时已经是100+了,而且一直只升不降。好吧,当数据连接数达到200时,问题肯定会再次出现的。

于是我将这个问题告诉了小毛,要他自己去修改连接池释放机制(这里用的是项目单独设定的参数)。他说试过了,没有用,问下我有没有办法。

我这人记性一直欠佳,也很少去记忆一些参数设置,问我么?还我也只能问BD、GG了。。。

最终在强大的搜索引擎的帮助下,找到了相关参数说明,通过参考修改后成功解决了问题!

Tomcat连接池无法释放的解决方法:

编辑项目的连接池配置文件:context.xml,参考下面的【数据库连接设置】参数说明,按照实际情况调整好各项数值,尤其是Maxidle和maxActive。并记得加上removeAbandoned=true 相关释放参数即可,我们这最终设置好的context.xml如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值