DBCP Tomcat Connection pooling removeAbandoned not working
我已将 Tomcat DBCP 配置为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:mysid" username="abc" password="abc" maxActive="20" maxIdle="4" minIdle="0" maxWait="4" removeAbandoned="true" logAbandoned="true" removeAbandonedTimeout="3" /> |
我不知道,我已经将上述设置定义为正确与否。
我正在使用struts 2,一个网页有菜单链接,它正在调用动作类,我在其中执行所有数据库操作并打开/关闭来自/到池的连接。
问题是,如果我连续点击菜单链接 40-50 次,连接会增加,单击鼠标,然后等待响应,效果很好(即不增加连接)。
只有在不等待单个响应的情况下连续疯狂点击,才会使连接突然上升,而不是回到初始状态。
如果我的连接在动作类中的某个地方泄漏,那么为什么它总是在单击鼠标、等待响应然后再次单击鼠标时表现良好?
(连续点击相同的菜单链接结果:)
正如我已将 maxActive 定义为 20 一样,连接数将持续到 24(我记得),并且在该池用尽之后,即新连接/请求无限期地等待从用尽的池中获取连接。
我的疑问是,为什么 removeAbandoned 没有关闭连接,因为我指定了 removeAbandonedTimeout=3。
如果我假设我有连接内存泄漏或者我没有故意关闭任何连接,那么 removeAbandoned 是否会杀死所有打开的连接?
或者我的 DBCP 设置或以上参数有什么问题吗?
请帮我解决这个问题。
我会说
另外,我建议增加
至于
要记住的另一件事是,将