【发布时间】:2017-02-10 21:34:50
【问题描述】:
我很确定我会随着时间的推移泄漏连接,导致 Tomcat 进程 (Windows) 锁定。
处于锁定状态时的症状:
- 高 CPU(固定在 50% 以上)
- 大量的数据库 TCP 连接
- 大多数/所有 apr 线程都卡在 c3p0...getConnection...awaitAvailable
如果理论是正确的并且我们正在泄漏连接并最终耗尽它们,这会导致 CPU 使用率高吗?
我注意到繁忙的线程实际上主要是 GC。
【问题讨论】:
我很确定我会随着时间的推移泄漏连接,导致 Tomcat 进程 (Windows) 锁定。
处于锁定状态时的症状:
如果理论是正确的并且我们正在泄漏连接并最终耗尽它们,这会导致 CPU 使用率高吗?
我注意到繁忙的线程实际上主要是 GC。
【问题讨论】:
连接泄漏会导致 CPU 使用率高的原因并不明显,除非您有一个非常大的 maxPoolSize 并且未完成的连接有一些开销。
无论如何,要做的是修复您的连接泄漏。参见例如C3P0 Spring Hibernate: Pool maxed out. How to debug?
如果连接泄漏得到解决后仍然存在 CPU 问题,那么您在跟踪问题时就会减少混乱和噪音。但不知何故,连接泄漏很可能是问题所在。
【讨论】: