[jboss-user] [JBossMQ] - UIL2.SocketManager Threads accumulate until crash

MarcusDidiusFalco do-not-reply at jboss.com
Wed Aug 5 05:02:44 EDT 2009


JBoss 4.2.2 GA

Hallo,
I have to fix an application which heavily relies on JMS. 
It crashes after it has received a number of messages, because of a
java.lang.OutOfMemoryError: unable to create new native thread
A thread dump and jconsole show that 
Thread: UIL2.SocketManager.ReadTask#259 client=127.0.0.1:8093 : priority:5, demon:true, threadId:576, threadState:RUNNABLE, lockName:null
  | java.net.SocketInputStream.socketRead0(Native Method)
  | java.net.SocketInputStream.read(SocketInputStream.java:129)
  | java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
  | java.io.BufferedInputStream.read(BufferedInputStream.java:235)
  | org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:79)
  | java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)
  | java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2376)
  | java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2443)
  | java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2515)
  | java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2664)
  | java.io.ObjectInputStream.readByte(ObjectInputStream.java:875)
  | org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:340)
  | java.lang.Thread.run(Thread.java:595)
  | 
  | Thread: UIL2.SocketManager.WriteTask#260 client=127.0.0.1:8093 : priority:5, demon:true, threadId:577, threadState:TIMED_WAITING, lockName:java.lang.Object at 3380c5
  | java.lang.Object.wait(Native Method)
  | EDU.oswego.cs.dl.util.concurrent.LinkedQueue.poll(LinkedQueue.java:170)
  | org.jboss.mq.il.uil2.SocketManager$WriteTask.run(SocketManager.java:551)
  | java.lang.Thread.run(Thread.java:595)

Threads accumulate.
If have already tried to identify all the points where JMS messages are send in the application and made sure that close() is called on sender, session and connection.
However the threads still accumulate.
What would be the best way to further analyse this? Is there a possibility to exactly find out which of my classes starts those threads which do not terminate?

Thanks,

Hans


View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4248059#4248059

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4248059



More information about the jboss-user mailing list