Nic*_*oul 4 monitoring tomcat apache-commons-dbcp
Tomcat有一个数据库连接池(DBCP)来更快地发出请求.
在我的应用程序中,太多的连接被使用太长时间,我怀疑泄漏(连接没有正确关闭),我需要找出泄漏的位置.
问题:如何找出使用连接的每个线程的名称?
最好是现场JMX MBean,但也欢迎其他提示.显示每个线程的堆栈跟踪或类名也是可以接受的.
注意:我不是在寻找显示DBCP设置的MBean.我想看看每个连接的用途.
遗憾的是,这样的bean不存在.
您可以做的是logAbandoned在DBCP配置中启用该设置.有关详细信息,请查看Apache Commons-DBCP(http://commons.apache.org/dbcp/configuration.html)的文档:您可以使用<Resource>Tomcat 中元素中的所有配置选项.
logAbandoned将告诉您哪个连接已被检出 - 池未及时返回.这可能表示连接泄漏,或只是长时间运行的查询.
更新2015-12-15
使用Tomcat tomcat-pool,您可以附加诸如SlowQueryReport之类的拦截器,或者通过JMX获取通知,SlowQueryReportJmx
这些工具可能比您从Apache Commons-DBCP获得的更基本的信息做得更好.
在Christopher的回答中,我创建了一个监视借用/释放连接的工具:
https://github.com/nicolas-raoul/Commons-DBCP-monitoring
它监视Commons DBCP的使用情况,并允许用户创建这样的图表:


它使得识别哪些线程长时间保持连接非常容易.
| 归档时间: |
|
| 查看次数: |
6918 次 |
| 最近记录: |