代码之家  ›  专栏  ›  技术社区  ›  sehugg

当使用cmsgc时,tomcat6连接池变得异常

  •  2
  • sehugg  · 技术社区  · 16 年前

    XX:+UseConcMarkSweepGC )在测试中效果很好。当我们开始生产的时候,最初几个小时一切都很好,但后来我们突然开始看到恐惧:

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

    我们在数据库物理上处于下降状态或重载时看到了这些消息,但这次情况并非如此。所以我开始怀疑最近的GC改变是否是罪魁祸首。

    我不明白为什么我们以前没见过这个。将GC更改为并发标记-清除是否会改变某些东西(可能是终结器),从而暴露此配置的问题?

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

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

    我读 this link 开始怀疑这些是不是太天真了。据我所知,超过60个连接,我们将开始打开和关闭连接,而不会将它们返回池中。但我还是不明白这和我们的GC变化之间是否有联系。

    我们在MySQL 5.1.45(5.1.12jdbc连接器)中使用tomcat6.0.29。

    2 回复  |  直到 16 年前
        1
  •  2
  •   keyser help    13 年前
        2
  •  0
  •   cherouvim    15 年前

    在任何情况下,我强烈建议远离dbcp,使用类似 http://sourceforge.net/projects/c3p0/

    推荐文章