关于 java:DBCP Tomcat Connection pooling removeAbandoned not working | 珊瑚贝

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 设置或以上参数有什么问题吗?
请帮我解决这个问题。


我会说maxWait参数的值太小了。根据文档,它的度量单位是毫秒。分配所有可用连接后,在您的情况下,它将仅等待 4 毫秒并引发异常。

另外,我建议增加 minIdle 参数值的值,以便始终有多个”准备好的”连接可供使用。当然,之后您可能需要额外增加 maxIdle 参数值的值。

至于 removeAbandonedTimeout 参数,请确保其值大于运行任何数据库操作所需的秒数。

要记住的另一件事是,将 logAbandoned 设置为 true 会增加连接借用过程的一些开销。

  • 我试着增加一点值,但它仍然是一样的。我了解 removeAbandonedTimeout 值需要大于否。运行任何数据库操作以避免连接中断所需的秒数。但是 removeAbandonedTimeout=”3″ 是否意味着关闭连接/或者甚至将运行模式连接带回池?
  • 为什么连续单击鼠标 50-60 次后,连接池会耗尽并停止分配更多连接?
  • 你的意思是说”增加一点价值”?问题是您的所有值都比默认值小得多(removeAbandonedTimeout = 60,maxActive = 100,maxIdle = maxActive = 100,minIdle = initialSize = 10,maxWait = 30000)。您是否有任何特定理由使用比默认值小得多的值?最重要的是,如果您需要更多连接,为什么不分配更多呢?
  • 我要分配多少连接,所有连接都会用尽,因为它的连接在我的代码中泄漏..为什么 removeAbandoned=”true” 在这种情况下没有关闭连接?
  • 也许这仅仅是因为没有理由将连接标记为已放弃并删除它们?去阅读文档,看起来你并没有真正遵循 removeAbandoned 参数的含义。另外,看看 timeBetweenEvictionRunsMillis 是什么意思。


来源:https://www.codenong.com/14404271/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9623.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?