ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From <Torsten.Ro...@teliasonera.com>
Subject iBatis settings and datasource configuration
Date Mon, 24 Sep 2007 20:54:04 GMT
Our J2SE webapp using iBatis with SimpleDataSource running in Apache Tomcat occasionally starts
to hang. It hits the roof of max. Nr. of threads and looking at the thread dump, there are
many threads that seem blocked trying to get and return(!) connections from and to the pool:

"TP-Processor406" daemon prio=10 tid=0x005fbc00 nid=0xda4 waiting for monitor entry [0x7ce7f000..0x7ce81788]
   java.lang.Thread.State: BLOCKED (on object monitor)
 at com.ibatis.common.jdbc.SimpleDataSource.pushConnection(SimpleDataSource.java:521)
  - waiting to lock <0x9e9d37f0> (a java.lang.Object)
 at com.ibatis.common.jdbc.SimpleDataSource.access$100(SimpleDataSource.java:52)
 at com.ibatis.common.jdbc.SimpleDataSource$SimplePooledConnection.invoke(SimpleDataSource.java:954)
 at $Proxy21.close(Unknown Source)
[...]

It almost looks to me as if SimpleDataSource blocks threads from returning connections to
the pool, while other threads are trying to get connections from it - some kind of deadlock
scenario?

Assuming that my observation is wrong, I wonder if our configuration is good. We currently
have:

iBatis settings

        maxRequests="128"
        maxSessions="64"
        maxTransactions="64"

and datasource settings

        maxActive=50
        maxIdle=15

Isn't maxTransactions too high? Besides the rules pointed out in the documentation, are there
rules on how these settings should relate to the datasource settings? Something like maxActive
should be at least maxSessions or something like that?

Would these settings be any good?

        maxRequests="320"
        maxSessions="64"
        maxTransactions="32"

Torsten

Mime
View raw message