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

  1. vm periodic task thread - consume 40-50 % of cpu
  2. vm thread - consume 25-30% of cpu
  3. websphere mq trace monitor- consume 25-30% cpu.

questions:

  1. why thread 1, , 2 consume high cpu , how optimize it.?
  2. how stop thread 3, impact on functionality of jms.?
  3. is need change configuration of vmware run java application?
  4. 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