2017-02-10 159 views
0

我很确定我的连接正在泄漏,导致Tomcat进程(Windows)锁定。用尽c3p0池连接导致高CPU?

在锁止状态下,当症状:

  • 高CPU(50%+挂)
  • 停留在C3P0数据库的TCP连接
  • 大多数/全部Apr线程大量.. .getConnection ... awaitAvailable

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

我注意到繁忙的线程实际上大多是GC。

回答

1

这并不明显,为什么连接泄漏会导致CPU使用率过高,除非您有非常大的maxPoolSize,并且对未完成的连接有一些开销。

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

如果一旦连接泄漏得到解决仍然存在CPU问题,那么您就不会有困惑和噪音来处理问题了。但连接泄漏可能是问题,不知何故。

+0

感谢您的回复。我的池大小为160,并且在发生这种情况时,会经常在此awaitAvailable状态中看到很多(或关闭)的池。清理一些我们发现的泄漏源已经显示出积极的测试结果。以及部署其他c3p0调试技巧。 – Bobby