我试图在我们的服务中导致一些随机的,间歇性的“冻结”,并且在放弃几个问题后,我们为应用程序启用了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