上两天遇到这样一个问题,就是在项目的生产环境里面经常就会慢的要死甚至访问不了,初步怀疑是数据库太慢了,经过长时间的查找,发现weblogic10监控数据源连接的时有一条“不可用的连接”到达了 连接的最大容量,weblogic10的连接池里面已经没有连接给应用程序了,所以系统访问特别慢。
但是现在问题又来了,我如何能找到这个不可用的连接是哪造成的呢?经过观察这个连接增长的很慢 ,在大用户量的前提下每天也就增加10来个也就是说此没有释放的连接很隐蔽,如果检查代码的话 偌大的工程 而且又不容易找到,实在不是一个明智的解决方案,就想着既然weblogic10能监控有多少个连接没有释放,是不是可以监控究竟是哪没有释放呢? 我问了一下我们公司的weblogic工程师,他的答案是不能。经过不断的调查我发现数据源里面有一个参数是“非活动连接超时”这个参数,就是把不活动的连接经过一段时间后强制回收,我想着在回收的时候会不会打印出日志,因为在一些外部连接池 dbcp啊c3p0啊这些都会打印日志的,于是试了一下,果然打印出日志 打印出的是程序中哪个方法没有释放掉连接 于是再完善该方法