【问题标题】:Running out of c3p0 pooled connections lead to high CPU?c3p0 池连接用完会导致 CPU 过高?
【发布时间】:2017-02-10 21:34:50
【问题描述】:

我很确定我会随着时间的推移泄漏连接,导致 Tomcat 进程 (Windows) 锁定。

处于锁定状态时的症状:

  • 高 CPU(固定在 50% 以上)
  • 大量的数据库 TCP 连接
  • 大多数/所有 apr 线程都卡在 c3p0...getConnection...awaitAvailable

如果理论是正确的并且我们正在泄漏连接并最终耗尽它们,这会导致 CPU 使用率高吗?

我注意到繁忙的线程实际上主要是 GC。

【问题讨论】:

    标签: java tomcat c3p0


    【解决方案1】:

    连接泄漏会导致 CPU 使用率高的原因并不明显,除非您有一个非常大的 maxPoolSize 并且未完成的连接有一些开销。

    无论如何,要做的是修复您的连接泄漏。参见例如C3P0 Spring Hibernate: Pool maxed out. How to debug?

    如果连接泄漏得到解决后仍然存在 CPU 问题,那么您在跟踪问题时就会减少混乱和噪音。但不知何故,连接泄漏很可能是问题所在。

    【讨论】:

    • 感谢您的回复。我的池大小是 160,并且在发生这种情况时经常看到很多(或关闭)处于此 awaitAvailable 状态。到目前为止,清理我们发现的几个泄漏源已显示出积极的测试结果。部署其他 c3p0 调试技巧。
    猜你喜欢
    • 2014-08-21
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多