Hello,
under load we observed some performance problems caused by threads stopped by
RWLockDataStructure.getResource.
Our connection pool is tuned for performance (init capacity = max capacity,
we don't use the XA driver, custom connection validator is doing a pretty
simple query).
We are using the latest Oracle JDBC thin driver.
Here an example for such a waiting thread:
"http-thread-pool-51001(5)" daemon prio=10 tid=0x00002aaacf0e5800 nid=0x3d6
waiting on condition [0x0000000047197000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000045dc39d58> (a
java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
at
java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:941)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1261)
at
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:594)
at
com.sun.enterprise.resource.pool.datastructure.RWLockDataStructure.getResource(RWLockDataStructure.java:116)
at
com.sun.enterprise.resource.pool.ConnectionPool.getResourceFromPool(ConnectionPool.java:716)
at
com.sun.enterprise.resource.pool.ConnectionPool.getUnenlistedResource(ConnectionPool.java:632)
at
com.sun.enterprise.resource.pool.ConnectionPool.internalGetResource(ConnectionPool.java:526)
at
com.sun.enterprise.resource.pool.ConnectionPool.getResource(ConnectionPool.java:381)
at
com.sun.enterprise.resource.pool.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:259)
at
com.sun.enterprise.resource.pool.PoolManagerImpl.getResource(PoolManagerImpl.java:178)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.getResource(ConnectionManagerImpl.java:341)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:304)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:190)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165)
at
com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:160)
at
com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:110)
...
Do you have any hints how to improve the performance/scalability and avoid
the mentioned locks?
GF 3.1 build 43, 1.6.0_24 64bit, Multi-Core Linux machines
thanks in advance for any hints,
makiey
--
[Message sent by forum member 'makiey']
View Post: http://forums.java.net/node/836233