java - Jolokia 防止 Tomcat 关闭

标签 java tomcat jolokia

我将 jolokia 与我的 tomcat(tomcat 7.0.53,jdk 1.8.0_45)集成

我在 tomcat-directory/bin/setenv.sh 中配置了 javaagent:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/jolokia-jvm-1.2.0-agent.jar=config=/path/to/config.properties"

现在,我无法关闭 tomcat。 ps 告诉我,java 进程已经在运行。 这是关机的输出:

-bash-4.1$ ./shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat/7.0.53/instance/ingest-news
Using CATALINA_HOME:   /usr/local/tomcat/7.0.53/instance/ingest-news
Using CATALINA_TMPDIR: /usr/local/tomcat/7.0.53/instance/ingest-news/temp
Using JRE_HOME:        /usr/local/java64/jdk1.8.0_45
Using CLASSPATH:       /usr/local/tomcat/7.0.53/instance/ingest-news/bin/bootstrap.jar:/usr/local/tomcat/7.0.53/instance/ingest-news/bin/tomcat-juli.jar
Using CATALINA_PID:    /var/run/tomcat/ingestnews.pid
Tomcat did not stop in time. PID file was not removed. To aid diagnostics a thread dump has been written to standard out.

这是线程转储:

INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
2015-07-10 11:46:04
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode):

"DestroyJavaVM" #31 prio=5 os_prio=0 tid=0x00007f69f05c4800 nid=0x370a waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Keep-Alive-Timer" #22 daemon prio=8 os_prio=0 tid=0x00007f6974142800 nid=0x372f waiting on condition [0x00007f697eefd000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172)
        at java.lang.Thread.run(Thread.java:745)

"Thread-7" #20 daemon prio=5 os_prio=0 tid=0x00007f6980435000 nid=0x372b runnable [0x00007f69b4dc6000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.EPoll.epollWait(Native Method)
        at sun.nio.ch.EPollPort$EventHandlerTask.poll(EPollPort.java:194)
        at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:268)
        at java.lang.Thread.run(Thread.java:745)

"PoolCleaner[683287027:1436521533079]" #19 daemon prio=5 os_prio=0 tid=0x00007f698039d800 nid=0x372a in Object.wait() [0x00007f69b52c7000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:552)
        - locked <0x00000000c51153f0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"GC Daemon" #16 daemon prio=2 os_prio=0 tid=0x00007f69f04ec000 nid=0x371e in Object.wait() [0x00007f69b5d6b000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000c473d598> (a sun.misc.GC$LatencyLock)
        at sun.misc.GC$Daemon.run(GC.java:117)
        - locked <0x00000000c473d598> (a sun.misc.GC$LatencyLock)

"Service Thread" #15 daemon prio=9 os_prio=0 tid=0x00007f69f02dd000 nid=0x371b runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #14 daemon prio=9 os_prio=0 tid=0x00007f69f02d1800 nid=0x371a waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #13 daemon prio=9 os_prio=0 tid=0x00007f69f02c7800 nid=0x3719 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #12 daemon prio=9 os_prio=0 tid=0x00007f69f02b0000 nid=0x3718 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Jolokia Agent Cleanup Thread" #11 daemon prio=5 os_prio=0 tid=0x00007f69f02bc800 nid=0x3717 in Object.wait() [0x00007f69d85c3000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Thread.join(Thread.java:1245)
        - locked <0x00000000c47b9298> (a org.jolokia.discovery.MulticastSocketListenerThread)
        at java.lang.Thread.join(Thread.java:1319)
        at org.jolokia.jvmagent.CleanupThread.joinThreads(CleanupThread.java:110)
        at org.jolokia.jvmagent.CleanupThread.run(CleanupThread.java:60)


"Thread-5" #10 prio=5 os_prio=0 tid=0x00007f69ac001000 nid=0x3716 runnable [0x00007f69d84c2000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
        at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
        at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
        - locked <0x00000000c47b9a40> (a sun.nio.ch.Util$2)
        - locked <0x00000000c47b9a30> (a java.util.Collections$UnmodifiableSet)
        - locked <0x00000000c47b9898> (a sun.nio.ch.EPollSelectorImpl)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        at sun.net.httpserver.ServerImpl$Dispatcher.run(ServerImpl.java:352)
        at java.lang.Thread.run(Thread.java:745)

"Thread-3" #8 prio=5 os_prio=0 tid=0x00007f69f02bb000 nid=0x3714 runnable [0x00007f69d86c4000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainDatagramSocketImpl.receive0(Native Method)
        - locked <0x00000000c47b9638> (a java.net.PlainDatagramSocketImpl)
        at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:144)
        - locked <0x00000000c47b9638> (a java.net.PlainDatagramSocketImpl)
        at java.net.DatagramSocket.receive(DatagramSocket.java:812)
        - locked <0x00000000c43e3998> (a java.net.DatagramPacket)
        - locked <0x00000000c47b95e8> (a java.net.MulticastSocket)
        at org.jolokia.discovery.MulticastSocketListenerThread.receiveMessage(MulticastSocketListenerThread.java:113)
        at org.jolokia.discovery.MulticastSocketListenerThread.run(MulticastSocketListenerThread.java:70)

"server-timer" #7 daemon prio=5 os_prio=0 tid=0x00007f69f026b000 nid=0x3713 in Object.wait() [0x00007f69d87c5000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:552)
        - locked <0x00000000c460e9c0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f69f017e000 nid=0x3712 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f69f0146000 nid=0x3711 in Object.wait() [0x00007f69d91fe000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
        - locked <0x00000000c43e39c0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f69f0144000 nid=0x3710 in Object.wait() [0x00007f69d92ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
        - locked <0x00000000c43e3a00> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=0 tid=0x00007f69f013f000 nid=0x370f runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f69f001f000 nid=0x370b runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f69f0021000 nid=0x370c runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f69f0022800 nid=0x370d runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f69f0024800 nid=0x370e runnable

"VM Periodic Task Thread" os_prio=0 tid=0x00007f69f02df800 nid=0x371c waiting on condition

JNI global references: 269

Heap
 PSYoungGen      total 284672K, used 39633K [0x00000000ec100000, 0x0000000100000000, 0x0000000100000000)
  eden space 250880K, 3% used [0x00000000ec100000,0x00000000ec960a58,0x00000000fb600000)
  from space 33792K, 91% used [0x00000000fdf00000,0x00000000ffd53bd0,0x0000000100000000)
  to   space 37888K, 0% used [0x00000000fb600000,0x00000000fb600000,0x00000000fdb00000)
 ParOldGen       total 89600K, used 41901K [0x00000000c4200000, 0x00000000c9980000, 0x00000000ec100000)
  object space 89600K, 46% used [0x00000000c4200000,0x00000000c6aeb770,0x00000000c9980000)
 Metaspace       used 51923K, capacity 52642K, committed 52864K, reserved 1095680K
  class space    used 6257K, capacity 6462K, committed 6528K, reserved 1048576K

现在,当我从 catalina_opts 中删除 javaagent 时,一切又恢复正常了。我在 stackoverflow 上搜索过,但没有找到任何解决方案。

最佳答案

这是 1.2.3 中修复的已知问题 --> https://github.com/rhuss/jolokia/issues/155

建议至少升级到1.2.3,当然最好升级到最新最好的版本1.3.1 ;-)

关于java - Jolokia 防止 Tomcat 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339293/

相关文章:

Java 返回退出代码 1

java - Private 就是 Private,那为什么 java 会提供使用反射来访问私有(private)方法的便利呢?

java - 如何在核心java中添加SSL证书?

tomcat - 异常 : Public keys in reply and keystore don't match

java - Mac OS Yosemite 上的 Tomcat(用于 iteraplan)

java - 通过 Java 获取 ActiveMQ/Jolokia/HawtIO 的凭证

java - 无法使用java将文件从一个xml写入另一个xml

security - 禁用沙盒 tomcat 9 ubuntu 20.04

java - 在 Spring Boot 应用程序和 hawt.io 中使用基本身份验证的 Jolokia

java - 如何使用 jolokia 检索类的 mbean