jboss 4.2.3 Connection Pool Leak
paata Feb 3, 2011 11:05 AMHi all,
My Env :
1. JBoss AS : 4.2.3.GA
2. Database : Oracle 10g
3. OS : Sun Solaris
4. Java : BEA JRockit(R) java version "1.6.0_05"
5. JAVA OPTS : "-server -Xmx4g -Xms4g -d64 -Xnoopt -XXnojitinline -XgcPrio:deterministic -Xpausetarget=40ms"
I've two databases with <xa-datasource> and one database with <local-tx-datasource> . Sample xa datasouce looks like:
<xa-datasource>
<jndi-name>XAOracleDS</jndi-name>
<track-connection-by-tx/>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
<xa-datasource-property name="URL">jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:STR</xa-datasource-property>
<xa-datasource-property name="User">***</xa-datasource-property>
<xa-datasource-property name="Password">***</xa-datasource-property>
<min-pool-size>50</min-pool-size>
<max-pool-size>100</max-pool-size>
<track-statements>true</track-statements>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<no-tx-separate-pools/>
<application-managed-security>true</application-managed-security><metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</xa-datasource>
Sample local datasource
<local-tx-datasource>
<jndi-name>TimesTen1</jndi-name>
<connection-url>jdbc:timesten:client:RTPPS1</connection-url>
<driver-class>com.timesten.jdbc.TimesTenDriver</driver-class>
<user-name></user-name>
<password></password>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<min-pool-size>3</min-pool-size><max-pool-size>5</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>15</idle-timeout-minutes>
<prepared-statement-cache-size>32</prepared-statement-cache-size><query-timeout>6000</query-timeout>
</set-tx-query-timeout>
<track-connection-by-tx/>
<metadata><type-mapping>TimesTen</type-mapping>
</metadata>
</local-tx-datasource>
I have approximately 200 messages (operations) per second. After a few days or maybe couple of hours by xa connection pool size achieve to maximum and jboss doesn't work as it should, however after invoking flush method on ManagedConnectionPool throgh jmx console, pool size decreases and application server continues to work.
For better explanation I've attached a graph (Vertical - Number of connections in use. Horizontal - time.):
At the same time, there is only one active connection in database
entry from arjuna log:
[com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource
We restart jboss every 2 days to keep it running. Any help is appreciated.
Thanks in advance,
Paata Lominadze