Have you considered pooling the connections? You'll probably find the performance of any Java app will degrade with that many threads...
Ken Ringdahl wrote: > > I'm running a load test that intends to throw on the order of several > thousand connections at a 2 node broker system with failover (ActiveMQ > 4.1.1) configured for tcp transport only. However, I'm just using a > single broker node right now and am getting out of memory errors at about > 400 connections. I've set the Xmx to 1024M and the memory is only ~110 MB > when this error occurs in the log. I've pasted the exceptions below. > The latter 2 exceptions do not immediately follow the first. They come > maybe a minute or so later. I've tried setting the preFetch to 1 in case > it's keeping messages in memory. But, to be honest, my test doesn't send > messages until all of the connections have been established. Any > suggestions as to what might be the problem here? > > > > jvm 1 | Exception in thread "ActiveMQ Transport Server: > tcp://localhost:61616" java.lang.OutOfMemoryError: unable to create new > native thread > jvm 1 | at java.lang.Thread.start0(Native Method) > jvm 1 | at java.lang.Thread.start(Thread.java:574) > jvm 1 | at > org.apache.activemq.thread.DedicatedTaskRunner.<init>(DedicatedTaskRunner.java:45) > jvm 1 | at > org.apache.activemq.thread.TaskRunnerFactory.createTaskRunner(TaskRunnerFactory.java:77) > jvm 1 | at > org.apache.activemq.broker.TransportConnection.<init>(TransportConnection.java:174) > jvm 1 | at > org.apache.activemq.broker.jmx.ManagedTransportConnection.<init>(ManagedTransportConnection.java:55) > jvm 1 | at > org.apache.activemq.broker.jmx.ManagedTransportConnector.createConnection(ManagedTransportConnector.java:56) > jvm 1 | at > org.apache.activemq.broker.TransportConnector$1.onAccept(TransportConnector.java:147) > jvm 1 | at > org.apache.activemq.transport.tcp.TcpTransportServer.run(TcpTransportServer.java:167) > jvm 1 | at java.lang.Thread.run(Thread.java:595) > jvm 1 | Exception in thread "RMI RenewClean-[172.16.105.110:36883]" > java.lang.OutOfMemoryError: unable to create new native thread > jvm 1 | at java.lang.Thread.start0(Native Method) > jvm 1 | at java.lang.Thread.start(Thread.java:574) > jvm 1 | at > sun.rmi.transport.tcp.TCPChannel.free(TCPChannel.java:321) > jvm 1 | at sun.rmi.server.UnicastRef.free(UnicastRef.java:395) > jvm 1 | at sun.rmi.server.UnicastRef.done(UnicastRef.java:412) > jvm 1 | at sun.rmi.transport.DGCImpl_Stub.dirty(Unknown Source) > jvm 1 | at > sun.rmi.transport.DGCClient$EndpointEntry.makeDirtyCall(DGCClient.java:328) > jvm 1 | at > sun.rmi.transport.DGCClient$EndpointEntry.access$1600(DGCClient.java:144) > jvm 1 | at > sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:539) > jvm 1 | at java.lang.Thread.run(Thread.java:595) > jvm 1 | Exception in thread "ActiveMQ Journal Checkpoint Worker" > java.lang.OutOfMemoryError: unable to create new native thread > jvm 1 | at java.lang.Thread.start0(Native Method) > jvm 1 | at java.lang.Thread.start(Thread.java:574) > jvm 1 | at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:429) > jvm 1 | at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:857) > jvm 1 | at > org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:376) > jvm 1 | at > org.apache.activemq.store.journal.JournalPersistenceAdapter$2.iterate(JournalPersistenceAdapter.java:129) > jvm 1 | at > org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:101) > jvm 1 | at > org.apache.activemq.thread.DedicatedTaskRunner.access$000(DedicatedTaskRunner.java:25) > jvm 1 | at > org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:39) > > -- View this message in context: http://www.nabble.com/ActiveMQ-Transport-Server-OutOfMemoryError-while-running-load-test-tf4697790s2354.html#a13737559 Sent from the ActiveMQ - User mailing list archive at Nabble.com.