Hi All,

I've just got hit by an OutOfMemoryError: unable to create new native
thread issue. I've switched UseDedicatedTaskRunner to false which
appears to have resolved the issue for now but I have a feeling I'm
just masking a deeper problem.

I have the following set up:

2 ActiveMQ brokers configured as a network of brokers
Several applications that use
  - a Spring JmsTemplate with a PooledConnectionFactory
  - a Spring DefaultMessageListenerContainer that uses a regular
ConnectionFactory. The DefaultMessageListenerContainers are set to
CACHE_CONSUMER
  - a static failover broker URL for both the JmsTemplate and listener
container to the two brokers

In the applications themselves, I'm getting this:

java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:574)
        at 
java.util.concurrent.ThreadPoolExecutor.addIfUnderMaximumPoolSize(ThreadPoolExecutor.java:455)
        at 
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:863)
        at 
org.apache.activemq.thread.PooledTaskRunner.wakeup(PooledTaskRunner.java:76)
        at 
org.apache.activemq.transport.failover.FailoverTransport.reconnect(FailoverTransport.java:536)
        at 
org.apache.activemq.transport.failover.FailoverTransport.start(FailoverTransport.java:239)
        at 
org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)
        at 
org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)
        at 
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:260)
        at 
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:224)
        at 
org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:172)
        at 
org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:125)
        at 
org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:110)
        at 
org.apache.activemq.pool.PooledConnectionFactory.createConnection(PooledConnectionFactory.java:81)
        at 
org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
        at 
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:461)
        at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)

In the brokers I'm getting this:

INFO   | jvm 1    | 2009/09/30 12:28:41 | Exception in thread
"ActiveMQ Transport Server Thread Hand
ler: tcp://localhost:41414" java.lang.OutOfMemoryError: unable to
create new native thread
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
java.lang.Thread.start0(Native Method)
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
java.lang.Thread.start(Thread.java:574)
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:221)
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
org.apache.activemq.transport.tcp.TcpTransportServer.handleSocket(TcpTransportServer.java:409)
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
org.apache.activemq.transport.tcp.TcpTransportServer$1.run(TcpTransportServer.java:341)
INFO   | jvm 1    | 2009/09/30 12:28:41 |       at
java.lang.Thread.run(Thread.java:595)
INFO   | jvm 1    | 2009/09/30 12:59:27 | Exception in thread
"DefaultMessageListenerContainer-80896" java.lang.OutOfMemoryError:
unable to create new native thread
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
java.lang.Thread.start0(Native Method)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
java.lang.Thread.start(Thread.java:574)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.core.task.SimpleAsyncTaskExecutor.doExecute(SimpleAsyncTaskExecutor.java:157)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.core.task.SimpleAsyncTaskExecutor.execute(SimpleAsyncTaskExecutor.java:145)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.core.task.SimpleAsyncTaskExecutor.execute(SimpleAsyncTaskExecutor.java:126)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.jms.listener.DefaultMessageListenerContainer.doRescheduleTask(DefaultMessageListenerContainer.java:598)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.jms.listener.AbstractJmsListeningContainer.rescheduleTaskIfNecessary(AbstractJmsListeningContainer.java:509)
INFO   | jvm 1    | 2009/09/30 12:59:27 |       at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:918)

I'm also getting a lot of these in the logs:

FailoverTransport.doReconnect | Successfully connected to tcp://xxxxxxxx:xxxx

any ideas?

Reply via email to