Hi,
We are running on JBoss 4.0.5, jdk 5.
We are performing load test, and sending ~20000 JMS messages per minute.
We notice the the Jms queue depth is continuously growing (it reaches about 300000 !).
We increased the number of MDBs consuming messages from this queue to 200, but for some reason it seems most of the MDBs (175 out of 200) are in state : TIMED_WAITING . (see example for one of the MDBs in the thread dump below)
"JMS SessionPool Worker-198" daemon prio=10 tid=0x00f11800 nid=0x184 in Object.wait() [0x1327f000..0x1327fa70]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at EDU.oswego.cs.dl.util.concurrent.SynchronousChannel.poll(SynchronousChannel.java:353)
- locked <0xaeaa5788> (a EDU.oswego.cs.dl.util.concurrent.LinkedNode)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor.getTask(PooledExecutor.java:723)
at org.jboss.jms.asf.StdServerSessionPool$MyPooledExecutor.getTask(StdServerSessionPool.java:397)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:747)
at java.lang.Thread.run(Thread.java:619)
Our application is running on a very strong T2000 machine with 32 cpu ( cpu load is 15%) and 3 giga memory ( memory consumption is 50%).
Our question: why are most of our Jms threads (MDBs) in TIMED_WAITING state instead of consuming messages from the queue?
your help is appreciated
John
If the thread is waiting then it has nothing to do.
The thread you show is NOT the MDB thread.
If you can't get above 15% then you have some other point of contention.
e.g. database.