用尽c3p0池连接导致高CPU?
问题描述:
我很确定我的连接正在泄漏,导致Tomcat进程(Windows)锁定。用尽c3p0池连接导致高CPU?
在锁止状态下,当症状:
- 高CPU(50%+挂)
- 停留在C3P0数据库的TCP连接
- 大多数/全部Apr线程大量.. .getConnection ... awaitAvailable
如果理论是正确的,我们正在泄漏连接,并最终用完它们,这是否会导致高CPU使用率?
我注意到繁忙的线程实际上大多是GC。
答
这并不明显,为什么连接泄漏会导致CPU使用率过高,除非您有非常大的maxPoolSize
,并且对未完成的连接有一些开销。
无论如何,要做的事情是解决您的连接泄漏。见例如C3P0 Spring Hibernate: Pool maxed out. How to debug?
如果一旦连接泄漏得到解决仍然存在CPU问题,那么您就不会有困惑和噪音来处理问题了。但连接泄漏可能是问题,不知何故。
感谢您的回复。我的池大小为160,并且在发生这种情况时,会经常在此awaitAvailable状态中看到很多(或关闭)的池。清理一些我们发现的泄漏源已经显示出积极的测试结果。以及部署其他c3p0调试技巧。 – Bobby