We are running JRun 3.1 build 51002, and using JRun connection pooling.
Metrics will show over 2000 connections used, with active = 0 idle = 0.  No
problems.   But sometimes, the following will appear in event log:

19:07:49 metrics (JRun) ... Connection Pool: Total [active=0 idle=1
used=47] myDB [active=0 idle=1 used=47] ...
 19:08:16 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:17 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:18 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:19 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:20 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:31 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:33 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:36 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:37 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:38 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName
 19:08:38 info (JRun) (myDB) Creating JDBC connection to
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName

There is no reason so many connections should have been made, at most 1 was
needed.  This bumps up the active connections.

metrics now:
19:07:49 metrics (JRun) ... Connection Pool: Total [active=12 idle=0
used=60] myDB [active=12 idle=0 used=60] ...

Then a while later often see:
19:13:50 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:51 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:52 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:53 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:54 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:55 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:56 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:57 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:58 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:13:59 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:14:00 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.
19:14:01 info (JRun) (myDB)Removing JDBC connection
jdbc:sybase:Tds:myHostName:1234?SERVICENAME=myDsName due to timeout even
though connection is still in use.

Now the idle connections go into negative numbers, and we end up with
metrics that look like:
19:14:49 metrics (JRun) ... Connection Pool: Total [active=12 idle=-10
used=65] myDB[active=12 idle=-10 used=65] ..

Often followed by multiple cases of:
19:14:02 error (jcp) Connection reset by peer: JVM_recv in socket input
stream read [java.net.SocketException: Connection reset by peer: JVM_recv
in socket input stream read]
java.net.SocketException: Connection reset by peer: JVM_recv in socket
input stream read

This happens several times, and the active / idle get up into the 40's.
The database then becomes unresponsive.  Sometimes users report error "All
threads are blocked"  Not good !

We are saying connection.close() to return it to the pool each time a new
connection has been gotten from the pool. Note that number of connected
users in the Sybase database only showed 1, when the metrics had 12 active
connections.
I wrote earlier about our servlet Init being called multiple times, and was
given suggestion to drop the "implements SingleThreadModel", which I have
done.
That has solved the multiple init problem, but still get the above.
Does any have any thoughts on what would make it run just fine for hours,
then go nuts and create all these extra connections? We can't seem to
correlate it with anything showing in the logs, and don't know what to look
at next to trouble shoot this.
Any help appreciated.  Thanks....

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to