【问题标题】:Tomcat JDBC Pool - timeBetweenEvictionRunsMillis is -1Tomcat JDBC 池 - timeBetweenEvictionRunsMillis 为 -1
【发布时间】:2017-11-07 10:02:23
【问题描述】:

Tomcat 8 JDBC连接池的timeBetweenEvictionRunsMillis设置为-1会发生什么?

tomcat wiki 说不应该少于 1 秒:

timeBetweenEvictionRunsMillis - (int) 空闲连接验证/清理线程运行之间休眠的毫秒数。此值不应设置在 1 秒以下。它决定了我们多久检查一次空闲、放弃的连接,以及我们多久验证一次空闲连接。默认值为 5000(5 秒)。

【问题讨论】:

  • PS:这是用于 Tomcat JDBC 连接池而不是 Apache DBCP。

标签: connection-pooling tomcat8 tomcat-jdbc


【解决方案1】:

它影响tomcat 8 JDBC pool 中的isPoolSweeperEnabled() 函数。如果值小于 0,则不会启用 Pool Sweeper。

如果任何需要在池中进行异步干预的设置被打开,则会启用池清扫器 boolean result = getTimeBetweenEvictionRunsMillis()>0

它影响查询以限制maxActive中定义的连接数

如果 isPoolSweeperEnabled() 返回 false,则应保留在空闲池中的最大连接数。如果 If isPoolSweeperEnabled() 返回 true,则空闲池可以增长到 getMaxActive() 并根据 getMinEvictableIdleTimeMillis() 进行收缩

【讨论】:

  • 对查询执行有影响吗?如果启用了 tomcat jdbc 池,我们会选择查询失败并出现异常(我们使用的是 Enterprise DB),如果禁用池,则可以正常工作
  • 在答案中添加详细信息
猜你喜欢
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 2012-03-02
  • 2014-12-26
  • 2014-02-24
  • 2012-11-04
  • 2012-12-08
  • 2017-06-19
相关资源
最近更新 更多