运行 超出 c3p0 池连接导致高 CPU?
Running out of c3p0 pooled connections lead to high CPU?
我很确定随着时间的推移我正在泄漏连接,导致 Tomcat 进程 (Windows) 锁定。
处于锁定状态时的症状:
- 高CPU(固定在 50%+)
- 大量数据库 TCP 连接
- Most/all apr 线程卡在 c3p0...getConnection...awaitAvailable
如果这个理论是正确的并且我们正在泄漏连接,并最终 运行 从它们中泄漏出来,这会导致高 CPU 使用率吗?
我注意到繁忙的线程实际上主要是 GC。
为什么连接泄漏会导致高 CPU 使用率并不明显,除非您有非常大的 maxPoolSize
并且未完成的连接有一些开销。
无论如何,要做的就是修复您的连接泄漏。参见例如
如果连接泄漏得到解决后仍然存在 CPU 问题,那么您在处理问题追踪时就不会感到困惑和烦恼。但连接泄漏很可能是问题所在。
我很确定随着时间的推移我正在泄漏连接,导致 Tomcat 进程 (Windows) 锁定。
处于锁定状态时的症状:
- 高CPU(固定在 50%+)
- 大量数据库 TCP 连接
- Most/all apr 线程卡在 c3p0...getConnection...awaitAvailable
如果这个理论是正确的并且我们正在泄漏连接,并最终 运行 从它们中泄漏出来,这会导致高 CPU 使用率吗?
我注意到繁忙的线程实际上主要是 GC。
为什么连接泄漏会导致高 CPU 使用率并不明显,除非您有非常大的 maxPoolSize
并且未完成的连接有一些开销。
无论如何,要做的就是修复您的连接泄漏。参见例如
如果连接泄漏得到解决后仍然存在 CPU 问题,那么您在处理问题追踪时就不会感到困惑和烦恼。但连接泄漏很可能是问题所在。