java - VM Periodic Task Thread, VM Thread and WebSphere MQ Trace Monitor consume 100+% cpu in linux -
my standalone java application uses nio selector socket connection, ibm mq classes (version 7.0.1.3) listen queue , topic , oracle_jdbc_driver db.three different thread running socket ,queue , topic connection. queue , topic listener working in asynchronous mode. make runnable jar in eclipse mars, oracle jdk version 1.7.03. when start application in window system(64-bit,16gb ram,intel core-i7) working fine, consume 0.3% of cpu. when start application in vmware ide cdr10 run on linux (64 bit).it consume 90-120% cpu. openjdk version install in vm 1.7.0_03-icedtea(64-bit).
suspects high cpu use after stack analysis
- vm periodic task thread - consume 40-50 % of cpu
- vm thread - consume 25-30% of cpu
- websphere mq trace monitor- consume 25-30% cpu.
questions:
- why thread 1, , 2 consume high cpu , how optimize it.?
- how stop thread 3, impact on functionality of jms.?
- is need change configuration of vmware run java application?
- is nio selector cause high cpu consumption?
thanks in advance. below stacktrace using jstack command. full thread dump openjdk 64-bit server vm (22.0-b10 mixed mode):
"attach listener" daemon prio=10 tid=0x00007f1d1c001000 nid=0x1280 waiting on condition [0x0000000000000000] java.lang.thread.state: runnable "destroyjavavm" prio=10 tid=0x00007f1d3c007000 nid=0xc47 waiting on condition [0x0000000000000000] java.lang.thread.state: runnable "serverthread" prio=10 tid=0x00007f1d3c3b0800 nid=0xcd7 runnable [0x00007f1d13b76000] java.lang.thread.state: runnable @ sun.nio.ch.epollarraywrapper.epollwait(native method) @ sun.nio.ch.epollarraywrapper.poll(epollarraywrapper.java:228) @ sun.nio.ch.epollselectorimpl.doselect(epollselectorimpl.java:81) @ sun.nio.ch.selectorimpl.lockanddoselect(selectorimpl.java:87) - locked <0x00000000ee0f17e8> (a sun.nio.ch.util$2) - locked <0x00000000ee0f17d8> (a java.util.collections$unmodifiableset) - locked <0x00000000ee0f09a8> (a sun.nio.ch.epollselectorimpl) @ sun.nio.ch.selectorimpl.select(selectorimpl.java:98) @ sun.nio.ch.selectorimpl.select(selectorimpl.java:102) "rcvthread: com.ibm.mq.jmqi.remote.internal.remotetcpconnection[qmid=ads.queue.manager_2014-03-19_11.32.54 ,fap=10,peer=ads1sitsvr1/10.106.95.15,localport=43233,ssl=no]" daemon prio=10 tid=0x00007f1d00001800 nid=0xcb1 runnable [0x00007f1d13c77000] java.lang.thread.state: runnable @ java.net.socketinputstream.socketread0(native method) @ java.net.socketinputstream.read(socketinputstream.java:150) @ java.net.socketinputstream.read(socketinputstream.java:121) @ com.ibm.mq.jmqi.remote.internal.remotetcpconnection.receive(remotetcpconnection.java:1409) @ com.ibm.mq.jmqi.remote.internal.remotercvthread.receivebuffer(remotercvthread.java:737) @ com.ibm.mq.jmqi.remote.internal.remotercvthread.receiveonetsh(remotercvthread.java:701) @ com.ibm.mq.jmqi.remote.internal.remotercvthread.run(remotercvthread.java:146) @ com.ibm.msg.client.commonservices.workqueue.workqueueitem.runtask(workqueueitem.java:209) @ com.ibm.msg.client.commonservices.workqueue.simpleworkqueueitem.runitem(simpleworkqueueitem.java:100) @ com.ibm.msg.client.commonservices.workqueue.workqueueitem.run(workqueueitem.java:224) @ com.ibm.msg.client.commonservices.workqueue.workqueuemanager.runworkqueueitem(workqueuemanager.java:298) @ com.ibm.msg.client.commonservices.j2se.workqueue.workqueuemanagerimplementation$threadpoolworker.run(workqueuemanagerimplementation.java:1220) "jmsccthreadpoolmaster" daemon prio=10 tid=0x00007f1d3c4e3000 nid=0xcaf in object.wait() [0x00007f1d38159000] java.lang.thread.state: waiting (on object monitor) @ java.lang.object.wait(native method) - waiting on <0x00000000ee101cf8> (a java.lang.object) @ java.lang.object.wait(object.java:503) @ com.ibm.msg.client.commonservices.j2se.workqueue.workqueuemanagerimplementation$workqueuemanagerthread.waitfornotification(workqueuemanagerimplementation.java:651) - locked <0x00000000ee101cf8> (a java.lang.object) @ com.ibm.msg.client.commonservices.j2se.workqueue.workqueuemanagerimplementation$workqueuemanagerthread.waitfornotification(workqueuemanagerimplementation.java:621) @ com.ibm.msg.client.commonservices.j2se.workqueue.workqueuemanagerimplementation$workqueuemanagerthread.run(workqueuemanagerimplementation.java:887) "websphere mq trace monitor" daemon prio=10 tid=0x00007f1d3c31e800 nid=0xc77 sleeping[0x00007f1d40305000] java.lang.thread.state: timed_waiting (sleeping) @ java.lang.thread.sleep(native method) @ com.ibm.mq.commonservices.internal.utils.tracemonitor.run(tracemonitor.java:123) "service thread" daemon prio=10 tid=0x00007f1d3c128800 nid=0xc70 runnable [0x0000000000000000] java.lang.thread.state: runnable "c2 compilerthread1" daemon prio=10 tid=0x00007f1d3c126000 nid=0xc6e waiting on condition [0x0000000000000000] java.lang.thread.state: runnable "c2 compilerthread0" daemon prio=10 tid=0x00007f1d3c123000 nid=0xc6b waiting on condition [0x0000000000000000] java.lang.thread.state: runnable "signal dispatcher" daemon prio=10 tid=0x00007f1d3c121000 nid=0xc6a runnable [0x0000000000000000] java.lang.thread.state: runnable "finalizer" daemon prio=10 tid=0x00007f1d3c0cc000 nid=0xc5f in object.wait() [0x00007f1d40ebe000] java.lang.thread.state: waiting (on object monitor) @ java.lang.object.wait(native method) - waiting on <0x00000000ee158730> (a java.lang.ref.referencequeue$lock) @ java.lang.ref.referencequeue.remove(referencequeue.java:135) - locked <0x00000000ee158730> (a java.lang.ref.referencequeue$lock) @ java.lang.ref.referencequeue.remove(referencequeue.java:151) @ java.lang.ref.finalizer$finalizerthread.run(finalizer.java:177) "reference handler" daemon prio=10 tid=0x00007f1d3c0c9800 nid=0xc5e in object.wait() [0x00007f1d40fbf000] java.lang.thread.state: waiting (on object monitor) @ java.lang.object.wait(native method) - waiting on <0x00000000ee158760> (a java.lang.ref.reference$lock) @ java.lang.object.wait(object.java:503) @ java.lang.ref.reference$referencehandler.run(reference.java:133) - locked <0x00000000ee158760> (a java.lang.ref.reference$lock) "vm thread" prio=10 tid=0x00007f1d3c0c1000 nid=0xc5c runnable "gc task thread#0 (parallelgc)" prio=10 tid=0x00007f1d3c011800 nid=0xc4d runnable "gc task thread#1 (parallelgc)" prio=10 tid=0x00007f1d3c013800 nid=0xc4f runnable "vm periodic task thread" prio=10 tid=0x00007f1d3c133000 nid=0xc72 waiting on condition jni global references: 273
Comments
Post a Comment