Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

三种方式启动docker中的arthas,想远程链接都没有成功 #2878

Open
1 task
zhangshuoa opened this issue Jul 26, 2024 · 0 comments
Open
1 task

Comments

@zhangshuoa
Copy link

  • 我已经在 issues 里搜索,没有重复的issue。

环境信息

  • Arthas 版本: 3.7.2
  • 操作系统版本: 宿主机Linux version 3.10.0-1160.114.2.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
  • docker :Docker version 17.03.0-ce, build 3a232c8
  • 目标进程的JVM版本: openjdk version "11.0.4" 2019-07-16
  • 执行arthas-boot的版本: 3.7.2

重现问题的步骤

问题1.在docker run 命令中加入-p 9001:9001 -e JDK_JAVA_OPTIONS='-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.211 -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false',再进入容器执行java -jar arthas-boot.jar ,报端口占用

问题2:下载镜像m.daocloud.io/hengyunabc/arthas:lastest,启动docker run --rm --name arthas -p 3658:3658 -p 8563:8563 docker.m.daocloud.io/hengyunabc/arthas:3.7.2 java -jar /opt/arthas/arthas-boot.jar --target-ip 172.17.0.10 1 attach-only
,失败

问题3:再次尝试建立一个新容器,对外开放3658和8563端口,进入容器内部,取得arthas包,手动启动。同时开放3658,8563两端口。浏览器打开提示“不是私密连接”,并弹出需要用户名密码人提示框。

实际运行的结果

结果1: NOTE: Picked up JDK_JAVA_OPTIONS: -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.211 -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
NOTE: Picked up JDK_JAVA_OPTIONS: -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.211 -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Error: JMX connector server communication error: service:jmx:rmi://f716f421fcb5:9001
jdk.internal.agent.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 9001; nested exception is:
java.net.BindException: Address in use (Bind failed)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:820)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:479)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
Caused by: java.rmi.server.ExportException: Port already in use: 9001; nested exception is:
java.net.BindException: Address in use (Bind failed)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:335)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:243)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411)
at java.rmi/sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
at java.rmi/sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:234)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap$PermanentExporter.exportObject(ConnectorBootstrap.java:203)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:153)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:138)
at java.management.rmi/javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:473)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:816)
... 3 more
Caused by: java.net.BindException: Address in use (Bind failed)
at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:436)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:381)
at java.base/java.net.ServerSocket.(ServerSocket.java:243)
at java.base/java.net.ServerSocket.(ServerSocket.java:135)
at java.rmi/sun.rmi.transport.tcp.TCPDirectSocketFactory.createServerSocket(TCPDirectSocketFactory.java:45)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:324)
... 12 more

结果2:
[root@instance-2prqet ~]# docker run --rm --name arthas -p 3658:3658 -p 8563:8563 docker.m.daocloud.io/hengyunabc/arthas:3.7.2 java -jar /opt/arthas/arthas-boot.jar --target-ip 172.17.0.10 1 attach-only
[INFO] JAVA_HOME: /usr/lib/jvm/java-1.8-openjdk/jre
[INFO] arthas-boot version: 3.7.2
[INFO] arthas home: /opt/arthas
[INFO] Try to attach process 1
Picked up JAVA_TOOL_OPTIONS:
2024-07-26 13:53:34
Full thread dump OpenJDK 64-Bit Server VM (25.212-b04 mixed mode):

"Service Thread" #8 daemon prio=9 os_prio=0 tid=0x000055bf8dacb000 nid=0x31 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x000055bf8da4b800 nid=0x30 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x000055bf8da49800 nid=0x2f runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x000055bf8da3d800 nid=0x2e runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

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

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x000055bf8da05000 nid=0x2c in Object.wait() [0x00007f96a4cfb000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000076d408ed0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
- locked <0x000000076d408ed0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x000055bf8da02800 nid=0x2b in Object.wait() [0x00007f96a4dfc000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000076d406bf8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
- locked <0x000000076d406bf8> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=0 tid=0x000055bf8d8b1800 nid=0x25 waiting on condition [0x00007f96bf33d000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.tools.attach.LinuxVirtualMachine.(LinuxVirtualMachine.java:100)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:100)
at com.taobao.arthas.core.Arthas.(Arthas.java:27)
at com.taobao.arthas.core.Arthas.main(Arthas.java:161)

"VM Thread" os_prio=0 tid=0x000055bf8d9f8000 nid=0x2a runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x000055bf8d8c8800 nid=0x26 runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x000055bf8d8ca000 nid=0x27 runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x000055bf8d8cc000 nid=0x28 runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x000055bf8d8cd800 nid=0x29 runnable

"VM Periodic Task Thread" os_prio=0 tid=0x000055bf8da87800 nid=0x32 waiting on condition

JNI global references: 5

Heap
PSYoungGen total 74752K, used 6451K [0x000000076d400000, 0x0000000772700000, 0x00000007c0000000)
eden space 64512K, 10% used [0x000000076d400000,0x000000076da4cd48,0x0000000771300000)
from space 10240K, 0% used [0x0000000771d00000,0x0000000771d00000,0x0000000772700000)
to space 10240K, 0% used [0x0000000771300000,0x0000000771300000,0x0000000771d00000)
ParOldGen total 171008K, used 0K [0x00000006c7c00000, 0x00000006d2300000, 0x000000076d400000)
object space 171008K, 0% used [0x00000006c7c00000,0x00000006c7c00000,0x00000006d2300000)
Metaspace used 3906K, capacity 4664K, committed 4864K, reserved 1056768K
class space used 381K, capacity 424K, committed 512K, reserved 1048576K

[ERROR] Start arthas failed, exception stack trace:
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
at sun.tools.attach.LinuxVirtualMachine.(LinuxVirtualMachine.java:106)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:100)
at com.taobao.arthas.core.Arthas.(Arthas.java:27)
at com.taobao.arthas.core.Arthas.main(Arthas.java:161)
[ERROR] attach fail, targetPid: 1

结果3:浏览器要求密码,虽然我没有设定密码。

详细过程见附件
arthas问题.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant