Re: [c3p0-users] idle_test_period ignored?
Status: Beta
Brought to you by:
swaldman
From: John S. <jds...@gm...> - 2006-12-21 21:28:40
|
Leonard, I experienced a similar problem. Basically it was a lack of understanding on my part about what exactly certain configuration options work -- multiplied across *lots* of app servers. We're running Oracle RAC with 150 app servers (expensive connection setup, lots of connections to set up). Our c3p0 config (using 0.9.1-pre10) used to look like this: c3p0.minPoolSize=15 c3p0.maxPoolSize=30 c3p0.acquireIncrement=5 c3p0.checkoutTimeout=30000 c3p0.maxIdleTime=120 c3p0.maxConnectionAge=7200 c3p0.idleConnectionTestPeriod=300 c3p0.testConnectionOnCheckin=true c3p0.preferredTestQuery=SELECT 1 FROM DUAL But we saw that even when the site was idle (and even under medium load), the db was getting hammered with reconnects. It turns out "maxIdleTime" means "the maximum number of seconds any given connection can be idle -- even if that connection is part of the minPoolSize connections". The more useful parameter is the new "maxIdleTimeExcessConnections". Our new properties look like: c3p0.minPoolSize=20 # fixed pool size: avoid any reconnects even under load acceleration c3p0.maxPoolSize=20 c3p0.acquireIncrement=5 # no-op, just left it here in case we go back to non-fixed-size c3p0.checkoutTimeout=30000 # give the app 30 sec. to get a connection c3p0.maxIdleTime=0 # NEVER time out, ever, let idle checks kill bad connections c3p0.maxConnectionAge=0 # NEVER time out, etc. c3p0.idleConnectionTestPeriod=300 # only try to test idle connections every 5 min. c3p0.testConnectionOnCheckin=true # always check connections coming back into pool c3p0.preferredTestQuery=SELECT 1 FROM DUAL # cheap check query Basically, I can't think of an Oracle configuration where you would want "maxIdleTime" to be any low number unless you have severe network misconfiguration and idle TCP connections are getting closed out from under you all the time or something. HTH, John... |