[jboss-user] [JBoss Messaging] - Threads not being cleaned up when clustered
chip_schoch
do-not-reply at jboss.com
Fri Feb 1 15:38:44 EST 2008
Clustered App servers. JBossAS 4.2.2.GA, JBM 1.4.0SP3
--------------
| | Appserver1 | <====== ConvServer1
| | Appserver2 | <====== ConvServer2
| --------------
|
My configuration is a shown above. I have 2 linux JBoss servers clustered and two windows jboss servers not clustered that act as clients to the clustered queues on the app servers. The conv servers connect using the ClusteredXAConnection factory. When I run a bunch of messages through in this configuration the thread count on both appservers continually increases until eventually I run out of memory.
When I shut down one of the app servers and perform the same test the thread count on the other app server decreases initially then remains steady . It does not increase when I run a bunch of messages through it.
--------------
| | | <====== ConvServer1
| | Appserver2 | <====== ConvServer2
| --------------
| DevApp1 ThreadCount DevApp2 ThreadCount
| Cluster with queuing started on devapp2
| Start 158 200
| After 4 usign packages 167 206
| After 4 usign packages 173 208
| After 4 usign packages 179 208
| After hundred events 177 212
| After 10 WPS packages 178 212
| After 10 WPS packages 180 212
|
| DevApp2 Only
|
| Before shutting down Devapp1 212
| After shutting down DevApp1 187
| After 4 usign packages 187
| After 6 usign packages 187
|
| Restarted with each conv server
| connecting to different appserver (no message sucking)
|
| Start 155 225
| After 4 usign packages 169 228
| After 4 usign packages 174 232
| After 3 packages one at a time 175 235*
| After 20 uSign packages 187 256
|
|
Without belaboring the point, in our system a package causes a series of
messages to be posted to various queues as it moves through the processing chain.
The packages called usign require that a conversion be performed by a service
running on the windows (conv) servers. These are the ones that cause the increase
in the thread count. I am convinced that it is not my code that is leaving the threads
around because it only happens when the cluster has more than one server running.
* I observed that appserver one processed the message, but the thread count increased
on appserver2 anyway.
Here are a couple of the stranded threads from the jmx-console view.
Thread: Thread-1562 : priority:5, demon:true, threadId:4470, threadState:WAITING, lockName:java.lang.Object at 11bad13
|
| java.lang.Object.wait(Native Method)
| java.lang.Object.wait(Object.java:474)
| EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122)
| EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83)
| java.lang.Thread.run(Thread.java:595)
|
| Thread: Thread-1568 : priority:5, demon:false, threadId:4478, threadState:WAITING, lockName:java.lang.Object at 1ffed3a
|
| java.lang.Object.wait(Native Method)
| java.lang.Object.wait(Object.java:474)
| EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122)
| EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83)
| java.lang.Thread.run(Thread.java:595)
|
| Thread: Thread-1569 : priority:5, demon:true, threadId:4479, threadState:WAITING, lockName:java.lang.Object at 12f926d
|
| java.lang.Object.wait(Native Method)
| java.lang.Object.wait(Object.java:474)
| EDU.oswego.cs.dl.util.concurrent.LinkedQueue.take(LinkedQueue.java:122)
| EDU.oswego.cs.dl.util.concurrent.QueuedExecutor$RunLoop.run(QueuedExecutor.java:83)
| java.lang.Thread.run(Thread.java:595)
|
|
|
|
Has anyone seen anything like this before?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4125664#4125664
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4125664
More information about the jboss-user
mailing list