Ryunix wrote:
Hi Phil,
Since you had mentioned about the active and idle connection in dbcp, do you
happen to know the reason why if I open the connection using
'dbcp_datasource.getConnection()' and never call the connection.close(), the
particular connection will always been treated by dbcp as 'active
connection'?
The dbcp numActive property name is probably not the best as it can be
confusing in this sense. What it counts is the number of connections
that are checked out from the pool. The invariant that the pool
maintains is numActive + numIdle <= maxActive. The second two property
names can also be confusing, since "idle" to dbcp means sitting in the
idle object pool and maxActive really bounds the sum above, which is in
effect the total number of physical connections that the pool can have
open from the database. Connections that have been checked out, but
"abandoned" by clients are included in the "active" count, as they meet
the definition of numActive above. Configuring abandoned connection
removal can prevent pool starvation when badly coded applications fail
to close connections checked out from the pool.
Phil
Thanks
Phil Steitz wrote:
[email protected] wrote:
Sorry for the delayed response. Since this list is shared for all
commons components, it's best to prefix the subject line, as I have
changed it above, to include the component name. See responses to your
questions below.
Hello,
I saw someone else ask this exact same question back in Dec but the reply
they received never really answered the question, so I thought I'd try
again.
I am using the dbcp included within Tomcat 5.5.27.
So should be dbcp 1.2.2, pool 1.4
I configure it using
context.xml with: maxActive="30" maxIdle="10"
I always assumed that maxActive would limit the total amount of DB
connections that could ever be open at one time (in this case 30).
That is correct.
Yet
from what I see it seems like I am limited to maxActive + maxIdle
connections open (in this case 40). Is that true?
No, maxActive should limit the total number of connections, idle in the
pool or checked out to clients.
Also, the default behavior seems to be that the connections never close
(or
timeout) within the pool when they are not being used.
Yes, the default behavior is not to validate or time out connections
while they are idle in the pool. You can change this behavior by
setting timeBetweenEvictionRunsMillis and minEvictableIdleTimeMillis to
positive numbers. The first of these determines how often (in
milliseconds) the "idle object evictor" runs and the second (also in
milliseconds) determines how long a connection can sit idle in the pool
before it is eligible for "eviction."
I had my Tomcat
server sit there for about an hour idle with no client requests incoming
and when I ran netstat -a I still saw 39 connections open, they only
closed
when I killed Tomcat. Do I have to turn on some kind of cleanup
explicitly?
See comment above on timing out idle connections, though be careful
about setting this too aggressively as it can lead to connection churn.
The number of open connections - 39 - looks too large for the maxActive
setting above. Are you sure all of the connections were opened by the
connection pool?
Phil
thanks!
--------------------------------------------------------------------
myhosting.com - Premium Microsoft® Windows® and Linux web and application
hosting - http://link.myhosting.com/myhosting
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]