[jboss-user] [JBoss Messaging] - Unable to create native thread
hendra_netm
do-not-reply at jboss.com
Mon Mar 3 13:26:37 EST 2008
Hi guys,
Currently, I am using JBoss AS 4.2.2 and JBoss Messaging 1.4 SP3.
When I put the messaging server under load, the number of the threads were increasing until I got "Out of Memory: Unable to create native thread"
2008-02-29 20:41:10,267 [ERROR] [WorkerThread#26[172.21.101.9:52414]] server.endpoint.ServerSessionEndpoint: Failed to prompt delivery
| java.lang.OutOfMemoryError: unable to create new native thread
| at java.lang.Thread.start0(Native Method)
| at java.lang.Thread.start(Thread.java:597)
| at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor.restart(QueuedExecutor.java:142)
| at EDU.oswego.cs.dl.util.concurrent.QueuedExecutor.execute(QueuedExecutor.java:157)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.promptDelivery(ServerSessionEndpoint.java:1539)
| at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.promptDelivery(ServerConsumerEndpoint.java:643)
| at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.changeRate(ServerConsumerEndpoint.java:420)
| at org.jboss.jms.server.endpoint.advised.ConsumerAdvised.org$jboss$jms$server$endpoint$advised$ConsumerAdvised$changeRate$aop(ConsumerAdvised.java:69)
| at org.jboss.jms.server.endpoint.advised.ConsumerAdvised$changeRate_N952316153687074823.invokeNext(ConsumerAdvised$changeRate_N952316153687074823.java)
| at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
| at org.jboss.jms.server.endpoint.advised.ConsumerAdvised$changeRate_N952316153687074823.invokeNext(ConsumerAdvised$changeRate_N952316153687074823.java)
| at org.jboss.jms.server.endpoint.advised.ConsumerAdvised.changeRate(ConsumerAdvised.java)
| at org.jboss.jms.wireformat.ConsumerChangeRateRequest.serverInvoke(ConsumerChangeRateRequest.java:71)
| at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)
| at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573)
| at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387)
| at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)
|
When I dump the threads, I found many waiting threads.
Thread: Thread-5097 : priority:5, demon:false, threadId:20461, threadState:WAITING, lockName:java.lang.Object at 469ace34
|
| java.lang.Object.wait(Native Method)
| java.lang.Object.wait(Object.java:485)
| 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:619)
In several hours, the number of this kind of threads can be more than 3000 threads, and they seem waiting forever.
Do you have any idea, why this can be happened? Does my application forget to free the threads? In what occasion the waiting threads are created and how to notify the threads so they are not waiting anymore?
My application is using client acknowledge. When a message is coming, it will be sent to another queue, before acknowledged.
Thank you for your time.
Best Regards,
Hendra
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4133694#4133694
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4133694
More information about the jboss-user
mailing list