gpt4 book ai didi

java - 使用 CMS GC 时,Tomcat 6 连接池变得古怪

转载 作者:行者123 更新时间:2023-11-30 09:53:18 27 4
gpt4 key购买 nike

我们最近更改为服务器上的 CMS 垃圾收集器 (XX:+UseConcMarkSweepGC),它在测试中运行良好。当我们投入生产时,最初几个小时一切正常,但随后我们突然开始看到可怕的事情:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection,
pool error Timeout waiting for idle object

我们曾在数据库物理停机或负载过重时看到这些消息,但这次情况并非如此。所以我开始怀疑最近的 GC 更改是否是罪魁祸首。

我不明白的是为什么我们以前没有见过这个。将 GC 更改为 concurrent-mark-sweep 是否会改变某些东西(也许是终结器),从而暴露此配置的问题?

我的 context.xml 参数看起来像这样:

<Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource"
maxActive="64" maxIdle="60" maxWait="10000"
defaultAutoCommit="false"

我读了this link并开始怀疑这些是否是非常幼稚的参数。据我了解,超过 60 个连接我们将开始打开和关闭连接而不将它们返回到池中。但我仍然不明白这与我们的 GC 更改之间是否存在联系。

我们使用 Tomcat 6.0.29 和 MySQL 5.1.45(5.1.12 JDBC 连接器)。

最佳答案

在初始化连接池时使用removeAbandoned="true"。点击此链接 http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

关于java - 使用 CMS GC 时,Tomcat 6 连接池变得古怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com