23
Jconsole JMX data capture of a Camel server This document contains screenshots taken on a production server. Its solely purpose is to share the collected data with people on the Camel list and help diagnose some performance issues.

Jmx capture

Embed Size (px)

Citation preview

Page 1: Jmx capture

Jconsole JMX data capture of a Camel server

This document contains screenshots taken on a productionserver. Its solely purpose is to share the collected data with

people on the Camel list and help diagnose some performance issues.

Page 2: Jmx capture
Page 3: Jmx capture

Memory

Page 4: Jmx capture
Page 5: Jmx capture
Page 6: Jmx capture
Page 7: Jmx capture
Page 8: Jmx capture
Page 9: Jmx capture
Page 10: Jmx capture
Page 11: Jmx capture

Threads

Page 12: Jmx capture
Page 13: Jmx capture

Camel threads• Some 1000 of them, most of them waiting for some lock, or parked.

• 424 <route> tags in a 4200 lines config file, there are some 626 routes available in theMbeans :-? (several routes are FTP from one URI to many URI)

Name: Camel (myCamel) thread #10 - ftp://retalixcon@SRV0043/exportState: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@16c83b9

Total blocked: 147 Total waited: 2

Stack trace:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)

java.util.concurrent.DelayQueue.take(DelayQueue.java:160)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

java.lang.Thread.run(Thread.java:662)

Name: Camel (myCamel) thread #192 - ftp://retalixcon@SRV0126/exportState: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@e91163

Total blocked: 28 Total waited: 2

Stack trace:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)

java.util.concurrent.DelayQueue.take(DelayQueue.java:160)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

java.lang.Thread.run(Thread.java:662)

Page 14: Jmx capture

Camel threads (continued)

Name: Camel (myCamel) thread #463 - ftp://retalixcon@SRV0153/export

State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@1a1156f

Total blocked: 426 Total waited: 2

Stack trace:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)

java.util.concurrent.DelayQueue.take(DelayQueue.java:160)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

java.lang.Thread.run(Thread.java:662)

Name: Camel (myCamel) thread #942 - ftp://retalixcon@SRV1004/export

State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@195f6a7

Total blocked: 130 Total waited: 2

Stack trace:

sun.misc.Unsafe.park(Native Method)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)

java.util.concurrent.DelayQueue.take(DelayQueue.java:160)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)

java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)

java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

java.lang.Thread.run(Thread.java:662)

Page 15: Jmx capture

Quartz threads

• 10 of them, mostly seem to be waiting (which should be normal).

Name: DefaultQuartzScheduler_Worker-1

State: TIMED_WAITING on org.quartz.simpl.SimpleThreadPool$WorkerThread@1efb21d

Total blocked: 0 Total waited: 123.407

Stack trace:

java.lang.Object.wait(Native Method)

org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:543)

Name: DefaultQuartzScheduler_Worker-5

State: TIMED_WAITING on org.quartz.simpl.SimpleThreadPool$WorkerThread@188145f

Total blocked: 0 Total waited: 123.428

Stack trace:

java.lang.Object.wait(Native Method)

org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:543)

Page 16: Jmx capture

Classes

Page 17: Jmx capture
Page 18: Jmx capture

Summary

Page 19: Jmx capture
Page 20: Jmx capture

JMX Mbeans

• Many thread pools (some 100) of FileConsumer and FtpConsumer type alike.

• Many ProducerCache

Page 21: Jmx capture
Page 22: Jmx capture
Page 23: Jmx capture