2017-02-10 160 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