我很确定随着时间的推移我会泄漏连接,导致 Tomcat 进程 (Windows) 锁定。
处于锁定状态时的症状:
- 高 CPU(固定在 50%+)
- 大量数据库TCP连接
- 大多数/所有 apr 线程卡在 c3p0...getConnection...awaitAvailable
如果这个理论是正确的并且我们正在泄漏连接并最终耗尽它们,这会导致高 CPU 使用率吗?
我注意到繁忙的线程实际上主要是 GC。
最佳答案
连接泄漏为什么会导致高 CPU 使用率并不明显,除非您有非常大的 maxPoolSize
并且对未完成的连接有一些开销。
无论如何,要做的就是修复连接泄漏。参见例如C3P0 Spring Hibernate: Pool maxed out. How to debug?
如果 Connection 泄漏得到解决后仍然存在 CPU 问题,那么您在处理问题追踪时就不会感到困惑和烦恼。但不知何故,连接泄漏很可能是问题所在。
关于java - 用完 c3p0 池连接会导致 CPU 高吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42169026/