2017-06-15 20 views
6

Quá trình java của tôi đang chạy bên trong vùng chứa. Tất nhiên tôi có thể thấy rằng quá trình trên máy chủ và xem pid của nó là tốt. Nếu jdk không được cài đặt trên cụm nhưng trên máy chủ, tôi có thể chạy jstack từ máy chủ đối với quá trình java trong vùng chứa docker hay không, sử dụng pid này. Bằng cách này, tôi đã thử nó và chạy vào sau lỗiCó thể lấy kết xuất chuỗi của một quá trình java trong vùng chứa từ máy chủ không?

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) 
+0

Cũng như jstack là nó có thể chạy kill -3 pid từ host? – Mark

+0

Có Đánh dấu. Mặc dù bạn có thể gửi tín hiệu bằng chính docker. sát thủ docker --signal SIGQUIT hobgoblin

Trả lời

0

Phiên bản jstack bạn đang sử dụng nhu cầu đến từ các phiên bản JVM chính xác cùng một phần mềm của bạn đang chạy.

Chạy jstack trong vùng chứa ứng dụng sẽ hoạt động.

Bạn cũng có thể chạy jstack trong gỡ lỗi từ xa sau khi kích hoạt máy chủ gỡ lỗi từ xa/jmx trên phần mềm của bạn.

Ngoài ra, nếu chứa của bạn không có jstack, bạn có thể có thể chạy một container được xây dựng với các JVM tương tự nhưng tàu jstack, trong không gian tên pid cùng của container JVM của bạn bằng cách chạy:

docker run --pid=container:your_app your_jstack_images jstack $in_your_app_container_jvms_pid

Các vấn đề liên quan