【问题标题】:Can "maxAge" of "org.apache.tomcat.jdbc.pool.DataSourceFactory" impact active database connection“org.apache.tomcat.jdbc.pool.DataSourceFactory”的“maxAge”是否会影响活动数据库连接
【发布时间】:2022-02-10 23:35:11
【问题描述】:

这就是我们的 PROD 场景:

  • 我们使用的是org.apache.tomcat.jdbc.pool.DataSourceFactory,maxAge 为900000maxActive100
  • 我们的数据库操作很长,由于数据库连接关闭异常而失败。
  • 当我检查日志时,我发现此异常在大约 15 分钟后发生。

所以,这让我想知道这是不是因为 maxAge900000。我阅读了 Apache 和其他博客的文档,但没有找到明确的答案,maxAge 是否会影响活动的数据库连接。

从文档中,我唯一 100% 确定的是,在将数据库连接移入或移出池时会检查 maxAge,但我不确定在使用数据库连接后会发生什么...

有没有人有类似的经验或知道maxAge 是否会影响活动连接?


更新 1:

我使用的是 Tomcat 8.5

【问题讨论】:

  • 在您再次回滚标签编辑之前:请说明这个问题与apache 有什么关系。 Tag Info
  • @OlafKock:为什么你要从我的问题中删除“apache”标签。这个问题是 Apache 特有的,你可以看到我提到了这个类 - org.apache.tomcat.jdbc。 pool.DataSourceFactory...请不要这样...
  • @OlafKock 请查看我上面的评论
  • 好吧,请阅读我上面链接的“标签信息”。
  • @OlafKock:逻辑上无法争辩......添加了 Tomcat,因为这也是 Tomcat 服务器特有的......

标签: java tomcat jdbc tomcat8


【解决方案1】:

根据this,它不会关闭您已经在使用的连接。它宁可在将其返回池之前检查年龄 - 在您释放连接之后。并在最大年龄已过时关闭。 我们从 no-max-age 缩短到 10 分钟,没有看到您报告的问题。

从文档中,

当连接返回到池中时,池将检查以查看 如果现在 - time-when-connected > maxAge 已经达到,如果是, 它关闭连接而不是将其返回到池中。

【讨论】:

  • 好的,谢谢您的意见..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2018-01-19
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
相关资源
最近更新 更多