我正在使用JMeter运行负载测试,并且使用12个线程很好地响应Mule,但是14个没有响应,然后我必须重新启动。有人帮助我。
没有错误,日志静止不动。
组件的配置
<jms:activemq-connector name="ActiveMQ" brokerURL="${org.xyz.esb.jms.url}"
validateConnections="true" createMultipleTransactedReceivers="true"
numberOfConcurrentTransactedReceivers="30" doc:name="AMQ BE">
<receiver-threading-profile maxThreadsActive="30" maxThreadsIdle="5" doThreading="false" threadTTL="20000" poolExhaustedAction="DISCARD_OLDEST" />
<reconnect frequency="5000"/>
</jms:activemq-connector>
<jms:activemq-connector name="ActiveMQLog" brokerURL="${org.xyz.esb.jms.url}" validateConnections="false" disableTemporaryReplyToDestinations="true" doc:name="AMQ Log"/>
<db:mysql-config name="MySQL_Cache" doc:name="MySQL Configuration" dataSource-ref="dataSMule"/>
<db:mysql-config name="MySQL_Cache2" doc:name="MySQL Configuration" dataSource-ref="dataSMule2"/>
<vm:connector name="vm_cnn_op" validateConnections="false"
createMultipleTransactedReceivers="true"
numberOfConcurrentTransactedReceivers="30">
<vm:queue-profile maxOutstandingMessages="500" />
</vm:connector>
<configuration doc:name="conf_ssb">
<default-threading-profile maxThreadsActive="30" maxThreadsIdle="5" doThreading="false" threadTTL="20000" poolExhaustedAction="DISCARD_OLDEST" />
</configuration>
<flow name="agent-xdf-main" processingStrategy="synchronous">
...
</flow>
---这是jstack的执行
2015-09-18 23:03:10
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.71-b01 mixed mode):
"Attach Listener" daemon prio=5 tid=0x00007ff231c14800 nid=0xdd07 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"ActiveMQ InactivityMonitor Worker" daemon prio=5 tid=0x00007ff231afa000 nid=0xab07 waiting on condition [0x0000000155c24000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000014c287758> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"[esb-xyz-r4].HTTP_HTTPS_4.receiver.15" prio=5 tid=0x00007ff2320ce000 nid=0xdb03 in Object.wait() [0x0000000159fb9000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000001469fa630> (a org.apache.commons.pool.impl.GenericObjectPool$Latch)
at java.lang.Object.wait(Object.java:503)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1118)
- locked <0x00000001469fa630> (a org.apache.commons.pool.impl.GenericObjectPool$Latch)
at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:79)
WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"[esb-xyz-r4].http.request.dispatch.8085.14" prio=5 tid=0x00007ff2320cd800 nid=0xd903 waiting on condition [0x0000000159ec0000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000001468c24a8> (a java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)
at org.mule.transport.http.HttpMessageProcessTemplate.awaitTermination(HttpMessageProcessTemplate.java:492)
at org.mule.transport.http.HttpMessageReceiver.processRequest(HttpMessageReceiver.java:60)
at org.mule.transport.http.HttpRequestDispatcherWork.run(HttpRequestDispatcherWork.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"Statistics Thread" daemon prio=5 tid=0x00007ff22b810800 nid=0x2b0b waiting on condition [0x0000000155a1e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000010f1d9a00> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"__DEFAULT__" daemon prio=5 tid=0x00007ff22afc3800 nid=0x2c0b in Object.wait() [0x0000000154de6000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010f1cea50> (a java.util.TaskQueue)
at java.util.TimerThread.mainLoop(Timer.java:552)
- locked <0x000000010f1cea50> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)
"Abandoned connection cleanup thread" daemon prio=5 tid=0x00007ff22b772000 nid=0x2f07 in Object.wait() [0x0000000151c47000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000010eb6f1a8> (a java.lang.ref.ReferenceQueue$Lock)
at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:41)
"[esb-xyz-r4].Mule.01" prio=5 tid=0x00007ff22b759800 nid=0x6203 waiting on condition [0x0000000156559000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000010ec222b0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:519)
at java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:682)
at org.mule.context.notification.ServerNotificationManager.run(ServerNotificationManager.java:267)
at org.mule.work.WorkerContext.run(WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"[esb-xyz-r4].log4j.config.monitor" daemon prio=5 tid=0x00007ff22b40b800 nid=0x6003 waiting on condition [0x0000000156456000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.mule.module.launcher.log4j.ArtifactAwareRepositorySelector$ConfigWatchDog.run(ArtifactAwareRepositorySelector.java:411)
"[default].processing.time.monitor" daemon prio=5 tid=0x00007ff22b6d7800 nid=0x5e03 in Object.wait() [0x0000000154bb5000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010ed30460> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000010ed30460> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at org.mule.management.stats.DefaultProcessingTimeWatcher$ProcessingTimeChecker.run(DefaultProcessingTimeWatcher.java:76)
at java.lang.Thread.run(Thread.java:745)
"[default].Mule.01" prio=5 tid=0x00007ff22adc2000 nid=0x5c03 waiting on condition [0x00000001551c4000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000010e1efb40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:519)
at java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:682)
at org.mule.context.notification.ServerNotificationManager.run(ServerNotificationManager.java:267)
at org.mule.work.WorkerContext.run(WorkerContext.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"[default].log4j.config.monitor" daemon prio=5 tid=0x00007ff22ad5f000 nid=0x5a03 waiting on condition [0x00000001550c1000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.mule.module.launcher.log4j.ArtifactAwareRepositorySelector$ConfigWatchDog.run(ArtifactAwareRepositorySelector.java:411)
"[default].log4j.config.monitor" daemon prio=5 tid=0x00007ff22ad03800 nid=0x5807 waiting on condition [0x0000000154fbe000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.mule.module.launcher.log4j.ArtifactAwareRepositorySelector$ConfigWatchDog.run(ArtifactAwareRepositorySelector.java:411)
"Mule.log.slf4j.ref.handler" prio=5 tid=0x00007ff22b1e4800 nid=0x5103 in Object.wait() [0x0000000154944000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010e1ea228> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000010e1ea228> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at org.mule.module.logging.LoggerReferenceHandler$1.run(LoggerReferenceHandler.java:49)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"Mule.log.clogging.ref.handler" prio=5 tid=0x00007ff22aced800 nid=0x4f03 in Object.wait() [0x0000000154841000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010e1e8898> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000010e1e8898> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at org.mule.module.logging.LoggerReferenceHandler$1.run(LoggerReferenceHandler.java:49)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
"Mule.system.log4j.config.monitor" daemon prio=5 tid=0x00007ff22acc2800 nid=0x4d03 waiting on condition [0x000000015473e000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.mule.module.launcher.log4j.ArtifactAwareRepositorySelector$ConfigWatchDog.run(ArtifactAwareRepositorySelector.java:411)
"DestroyJavaVM" prio=5 tid=0x00007ff22b0e0000 nid=0x1303 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Wrapper-Connection" daemon prio=5 tid=0x00007ff22b0d7800 nid=0x4903 runnable [0x0000000153cba000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.io.DataInputStream.readByte(DataInputStream.java:265)
at org.tanukisoftware.wrapper.WrapperManager.handleSocket(WrapperManager.java:3737)
at org.tanukisoftware.wrapper.WrapperManager.run(WrapperManager.java:4084)
at java.lang.Thread.run(Thread.java:745)
"Wrapper-Control-Event-Monitor" daemon prio=5 tid=0x00007ff22b072800 nid=0x4503 waiting on condition [0x0000000153ab4000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.tanukisoftware.wrapper.WrapperManager$3.run(WrapperManager.java:731)
"Service Thread" daemon prio=5 tid=0x00007ff22a8a8000 nid=0x4103 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=5 tid=0x00007ff22a87d000 nid=0x3f03 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=5 tid=0x00007ff22b001000 nid=0x3d03 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=5 tid=0x00007ff22a8a2800 nid=0x300f runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=5 tid=0x00007ff22b010800 nid=0x2903 in Object.wait() [0x0000000151b03000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010e120260> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000010e120260> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
"Reference Handler" daemon prio=5 tid=0x00007ff22a85e800 nid=0x2703 in Object.wait() [0x0000000151a00000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000010e11fd18> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x000000010e11fd18> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=5 tid=0x00007ff22a85c000 nid=0x2503 runnable
"GC task thread#0 (ParallelGC)" prio=5 tid=0x00007ff22a818800 nid=0x2103 runnable
"GC task thread#1 (ParallelGC)" prio=5 tid=0x00007ff22b00a000 nid=0x2303 runnable
"VM Periodic Task Thread" prio=5 tid=0x00007ff22a8b1000 nid=0x4303 waiting on condition
JNI global references: 471
答案 0 :(得分:1)
您没有提供任何信息,所以这里是一般答案:确保Mule的线程池配置正确。
答案 1 :(得分:0)
假设您正在进行http调用,您可以使用jetty-inbound而不是http-inbound传输来处理更多负载。
无论您使用何种传输方式,都应调整线程配置文件并从其他主机运行jmeter。
您还可以查看performance-tuning-guide上的更多信息。
答案 2 :(得分:0)
总的来说,需要使用缩小的方法来解决这些问题。由于没有明确每个线程在您的问题陈述中作为测试的一部分做什么,这里有几个指针,您可以尝试
有一些提示。请尽可能尝试