users@glassfish.java.net

how do I avoid a connection pool filling up?

From: Dick Davies <rasputnik_at_hellooperator.net>
Date: Tue, 13 Jan 2009 10:10:12 +0000

I got this error on my cluster over the weekend:

[#|2009-01-10T14:33:06.521+0000|WARNING|sun-appserver9.1|javax.enterprise.resource.resourceadapter|_ThreadID=154;
_ThreadName=httpSSLWorkerThread-39181-21;oracle-prod-pool;In-use
connections equal max-pool-size and expired max-
wait-time. Cannot allocate more
connections.;_RequestID=5e1a41cd-1a74-4a5e-8d3b-2582599ac0b6;|RAR5117
: Failed to
 obtain/create connection from connection pool [ oracle-prod-pool ].
Reason : In-use connections equal max-pool-s
ize and expired max-wait-time. Cannot allocate more connections.|#]

which I read as 'your connection pool is full, and I've been waiting
too long, so here's an Exception'.


Both appservers started giving 500s and the site was down for an hour or two.
It looks like there was some kind of network blip that stalled a few
connections, when I restarted the glassfish instances
everything was back up and running.



So I'm wondering how I tell Glassfish to step in and kill of idle
connections after a certain amount of time.

in the admin console I see a couple of options, I'm wonder

The first is Resources> JDBC> Connection Pools> oracle-prod-pool -> advanced

set a leak timeout and then tick 'leak reclaim'.

The second is Resources> JDBC> Connection Pools> oracle-prod-pool -> general

enable 'connection validation' and then 'on any failure' tick 'close
all connections'

Which do you folks think would be most likely to avoid this recurring
without impacting on the app (Roller 4 using openjpa)?