【发布时间】:2011-08-07 22:02:58
【问题描述】:
我在 tomcat(第 7 版)中使用 dbcp 连接池,但我的代码中某处存在连接泄漏。短时间后,新连接请求返回以下异常:
“无法获取连接,池错误超时等待空闲对象”
我回顾了我的代码,在我看来,所有连接都已正确关闭(不是每个人都这么说...)。
为了调试它,我在 context.xml 中添加了以下属性:
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
所以资源标签现在看起来像这样:
<Resource name="jdbc/findata" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="5" maxWait="10000"
username="root" password="xxxxxx" driverClassName="com.mysql.jdbc.Driver"
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
url="jdbc:mysql://localhost:3306/findata"/>
然后我重新启动了 tomcat 并开始访问网页,直到出现错误消息(在浏览器窗口中)。但是我还不能弄清楚“logAbandoned”属性在哪里写入它的信息。我在看
/usr/share/apache-tomcat-7.0.11/logs
但其中唯一最近修改的日志文件是
localhost_access_log.2011-04-18.txt
非常感谢任何帮助。
【问题讨论】:
-
我从来没有最终弄清楚如何让废弃的连接显示在日志中,但我又重新查看了代码,这次我成功地找出了泄漏。谁需要调试器或日志——对吗? ;)