【发布时间】:2017-11-17 22:12:20
【问题描述】:
我的 java 进程正在容器内运行。当然,我可以在主机上看到该进程,也可以看到它的 pid。如果 jdk 未安装在集群上而是安装在主机上,我可以使用此 pid 从主机针对 docker 容器中的 java 进程运行 jstack。顺便说一下,我试了一下,遇到了以下错误
Attaching to process ID 66367, please wait...
Error attaching to process: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
sun.jvm.hotspot.debugger.DebuggerException: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:411)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.JStack.main(JStack.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.tools.jstack.JStack.runJStackTool(JStack.java:140)
at sun.tools.jstack.JStack.main(JStack.java:106)
【问题讨论】:
-
除了 jstack 之外,是否可以从主机运行 kill -3 pid?
-
是的,马克。虽然您可以使用 docker 本身发送信号。 docker kill --signal SIGQUIT
标签: java docker docker-container