在我的Tomcat中,一个庞大的Web应用程序有时会开始使用太多的DBCP连接,导致问题。
为了调查,我想要精确地知道每个时间点哪个线程/方法正在持有池中的连接。不需要实时,事后分析就可以了。
我一直在寻找这样的DBCP监视工具,但是徒劳无功,所以我打算自己编写一个。
(如果有兴趣,我可以将其开源)
这是我的计划:
我是否遗漏了某些使这个想法无效的Commons-DBCP 1.4概念?
或者我是在重新发明轮子吗?
为了调查,我想要精确地知道每个时间点哪个线程/方法正在持有池中的连接。不需要实时,事后分析就可以了。
我一直在寻找这样的DBCP监视工具,但是徒劳无功,所以我打算自己编写一个。
(如果有兴趣,我可以将其开源)
这是我的计划:
- 修改PoolingDataSource.getConnection以记录“
DBCP+1 <thread-id>
” - 修改DelegatingConnection.close以记录“
DBCP-1 <thread-id>
” - 编写一个小脚本生成这个简单的CSV以进行可视化:
我是否遗漏了某些使这个想法无效的Commons-DBCP 1.4概念?
或者我是在重新发明轮子吗?