【发布时间】:2014-01-29 05:00:46
【问题描述】:
我运行一些 tomcat 应用程序,使用 jndi 连接池。 在某些时候,连接池停止提供连接并且应用程序挂起。 似乎是因为某些代码接收到连接并且没有将其返回到池中。 我如何监控 - 它是哪个代码? 更常见 - 我想看看所有连接目前都在做什么。
我无法更改应用程序。但我可以调整Tomcat,也许添加一些拦截器。
【问题讨论】:
-
好吧,我倾向于巧妙地应用 Eclipse 的代码搜索功能来找出所有获取连接的代码片段,然后逐一调查。通常问题出在糟糕的错误处理上,比如没有在 finally 子句中关闭连接。
-
这不合适,代码库非常棒,使用了很多方面和框架。假设琐碎的代码搜索无济于事。
-
是的,大型代码库需要大量工作。这只是事实。
-
大多数连接池实现都可以为您监控这一点。如果可以更新池的配置,则可以设置记录“放弃的连接”或“过期的租约”的参数。例如。对于 Tomcat 的 JDBC 连接池,在this 页面上搜索“Abandoned”。
-
谢谢@vanOekel,这就是我要寻找的!如果您添加单独的答案 - 我将其标记为编写解决方案。
标签: java tomcat jdbc connection-pooling