Arthas经常启动出现这种错误该如何解决? arthas-client connect 127.0.0.1 3658
Connect to telnet server error: 127.0.0.1 3658
java.net.ConnectException: 拒绝连接 (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:188)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:209)
at com.taobao.arthas.client.TelnetConsole.process(TelnetConsole.java:306)
at com.taobao.arthas.client.TelnetConsole.main(TelnetConsole.java:166)
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)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息,java.net.ConnectException: 拒绝连接 (Connection refused)
表明 Arthas 客户端尝试连接到本地的 127.0.0.1:3658
端口时被拒绝。这通常是由于以下原因之一导致的:
以下是针对该问题的详细排查步骤和解决方案。
Arthas 的客户端需要连接到 Arthas Server 才能正常工作。如果 Server 未启动或未正确运行,客户端将无法连接。
检查 Arthas Server 启动日志:
arthas-boot.jar
,请确认启动命令是否正确。例如:java -jar arthas-boot.jar
Arthas server started, listening on 3658
验证端口监听状态: 使用以下命令检查 3658
端口是否被监听:
netstat -anp | grep 3658
如果未发现监听记录,说明 Arthas Server 未正确启动。
即使 Arthas Server 已启动,网络问题也可能导致连接失败。
测试本地连接: 使用 telnet
或 nc
命令测试本地端口是否可达:
telnet 127.0.0.1 3658
或:
nc -zv 127.0.0.1 3658
如果连接失败,请检查是否有防火墙规则阻止了访问。
检查防火墙配置: 确保防火墙未阻止 3658
端口。例如,在 Linux 系统中可以使用以下命令查看防火墙规则:
sudo iptables -L
如果有相关规则,可以通过以下命令开放端口:
sudo iptables -A INPUT -p tcp --dport 3658 -j ACCEPT
如果 3658
端口已被其他进程占用,Arthas Server 将无法绑定到该端口。
查找占用端口的进程: 使用以下命令查找占用 3658
端口的进程:
lsof -i:3658
如果发现其他进程占用了该端口,可以选择终止该进程或修改 Arthas 的默认端口。
修改 Arthas 默认端口: 在启动 Arthas Server 时,可以通过参数指定其他端口。例如:
java -jar arthas-boot.jar --telnet-port 3659 --http-port -1
然后使用新端口连接:
arthas-client connect 127.0.0.1 3659
Arthas 依赖于 Java 环境和相关库,环境配置不当可能导致连接失败。
确认 Java 版本: Arthas 支持 Java 6 及以上版本。请确保使用的 Java 版本符合要求:
java -version
检查依赖库: 如果使用的是自定义的 Java 环境,确保所有必要的依赖库已正确加载。例如,commons-net
库是 Arthas 客户端的核心依赖之一。
如果网络延迟较高,可能会导致连接超时。可以尝试增加客户端的超时时间。
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.connectTimeout = 10000; // 设置连接超时时间为 10 秒
通过上述步骤,您可以逐步排查并解决 java.net.ConnectException: 拒绝连接
的问题。以下是关键点的总结:
如果问题仍未解决,请提供更详细的日志信息以便进一步分析。