我試圖在我們的服務中導致一些隨機的,間歇性的「凍結」,並且在放棄幾個問題後,我們爲應用程序啓用了c3p0調試級別日誌記錄,並且我們認爲它看起來像是c3p0配置問題。我們使用「Oracle數據庫11g企業版版本11.2.0.3.0 - 64位生產」作爲我們的數據庫。c3p0 - 任何問題設置initialPoolSize = minPoolSize = maxPoolSize?
從日誌摘錄顯示兩行是服務調用的一部分。這兩條線之間沒有3秒的活動,我無法特別指出任何事情。
12 Apr 2013 02:25:42,386 [DEBUG] (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#8) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool: Test of PooledConnection [[email protected]] on CHECKIN has SUCCEEDED.
12 Apr 2013 02:25:45,443 [DEBUG] com.mchange.v2.c3p0.stmt.GooGooStatementCache: checkinStatement(): com.mchange.v2.c3p0.stmt.PerConnectionMaxOnlyStatementCache stats -- total size: 85; checked out: 0; num connections: 5; num keys: 85
的C3P0結構如下所示。
acquireIncrement = 2;
acquireRetryAttempts = 0; # keep retrying forever
acquireRetryDelay = 10000; # 10 secs.
checkoutTimeout = 1000; # 1 secs.
idleConnectionTestPeriod = 60; # 1 min.
maxConnectionAge = 1800; # 30 mins.
maxIdleTime = 1800; # 30 mins.
maxIdleTimeExcessConnections = 120;
maxPoolSize = 30;
maxStatementsPerConnection = 25;
minPoolSize = 30;
initialPoolSize = 30;
numHelperThreads = 16; # asynchronous threads
preferredTestQuery = "SELECT 1 FROM dual";
testConnectionOnCheckin = true;
我不知道是否有配置問題導致凍結?另外,我想知道是否可以通過設置minPoolSize = maxPoolSize來影響性能(負面)。我無法找到有答案的類似問題/問題。我並不擔心應用程序啓動時間,但當連接達到其「年齡」時會發生什麼?我想了解c3p0在處理過時連接時的行爲。
爲了給出負載的概念,我們可以獲得大約300個服務呼叫/分鐘。 CPU /內存使用率都在合理的水平內,沒有什麼特別感興趣的。
任何見解將不勝感激。 謝謝! -Ameya
非常感謝!我將做必要的改變。 – 2013-04-30 14:39:45