We are running a Java app with Tomcat 5.0.x and Postgres 8.0.x on a
linux machine: 2.6.16 kernel, dual processor, 16gb ram, 2 scsi drives.
The machine runs a few other ongoing applications that handle
replication, but their impact on performance should be constant over time.
The application is using apache/jakarta (jndi) connection pooling with
Tomcat. We are using this jdbc driver: postgresql-8.0-315.jdbc3.jar.
Some of the queries that we are running must use serial counts, so I
know those are not as fast as in other rdbms. With five to ten clients
of the jsp/servlet application, I am seeing very high cpu usage
associated with what are apparently idle threads.
postgres 26999 0.0 0.0 116080 9984 ? S 14:51 0:00 \_
postgres: <user> <db> <ip> (62233) idle
postgres 2090 20.6 0.5 114844 85876 ? S 17:31 43:29 \_
postgres: <user> <db> <ip> (42411) idle
postgres 5968 24.1 0.5 114844 84888 ? S 18:55 30:19 \_
postgres: <user> <db> <ip> (41929) idle
^^^^
The 20.6 and 24.1 numbers represent cpu usage, as reported from ps -auxf.
Based on the time of day, these values can run from very low (2% or so)
to 30% or more. The connection pool has a range of 5 to 25, and these
conditions reflect a very low usage level, with maybe 5-6 concurrent
connections in the pool.
We are closing all jndi connections after use, but we are not
specifically invoking garbage collection or forcing use of a destroyer
method.
Any ideas about the jdbc type 3 driver, or tomcat connection pooling
with a Sun jvm on linux? The application itself represents a constant
load factor, with queries executing every minute on a cron - type
schedule (http://www.sauronsoftware.it/projects/cron4j/).
Thanks,
Brent Friedman
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org/