错误排查思路:如何排查Connection refused

简介: 遇到ConnectionRefused Exception异常时的排查思路和常见的linux网络命令

问题出现场景

我在使用hdfs的时候,报出如下异常:

java.net.ConnectException: Connection refused

排查思路

 ConnectionRefused Exception的定义如下:

You get a  ConnectionRefused Exception when there is a machine at the address specified, but there is no program listening on the specific TCP port the client is using -and there is no firewall in the way silently dropping TCP connection requests.

—— http://wiki.apache.org/hadoop/ConnectionRefused

即对应地址和端口没有进程进行TCP监听。

那么大致的排查思路就有了,从上到下为:

  1. 确保ip和端口正确(已经服务器应用是否启动)
  2. ping一下网络,看是否正常
  3. 查看端口是否有TCP监听
root@ecs-284712:~ netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      537/systemd-resolve 
tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      10442/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2280/sshd           
tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      10613/java          
tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      10613/java          
tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      10613/java          
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      10442/java          
tcp        0      0 0.0.0.0:50090           0.0.0.0:*               LISTEN      10809/java       

当发现地址为127.0.0.1时要注意,该地址仅单机可使用,外界不能连接。(一般都是/etc/hosts文件的域名映射不正确,将localhost映射为127.0.0.1, 我个人将hdfs配置文件etc/hadoop/core-site.xml中的localhost改为0.0.0.0可行)

  1. 查看防火墙是否开放该端口
# 1. 查看ufw的状态
root@ecs-284712:~ sudo ufw status

# 2. 开启ufw
root@ecs-284712:~ sudo ufw enable


# 3. 重启防火墙
root@ecs-284712:~ sudo ufw reload

# 4. 对外开启端口
root@ecs-284712:~ sudo ufw allow 9000


# 5. 关闭防火墙
root@ecs-284712:~ sudo ufw disable
  1. 阿里云、华为云等ESC服务器,一般要在安全组配置对应端口

ps: 顺便吐槽一下,我的云服务器突然ssh登陆不上了,找了一下午才发现是因为我开启了防火墙,没把端口22开放。

补充: linux常见网络请求

网络环境查看命令

  • ifconfig : 查看IP与子网掩码
  • 关闭与启动网卡

    • ifdown 网卡设备名 :禁用该网卡设备
    • ifup 网卡设备名 :启用该网卡设备
  • route 命令设置网关

    • route -n 查看路由列表(可以看到网关)
    • route add default gw 192.168.1.1 临时设置网关
  • netstat 选项 :查询网络状态

    • -t:列出TCP协议端口
    • -u:列出UDP协议端口
    • -n:不使用域名与服务名,而是使用IP地址和端口号
    • -l :仅列出在监听状态网络连接
    • -a:列出所有的网络连接
$ netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 172.16.247.46:47302     100.100.30.25:80        ESTABLISHED  //已经建立连接
tcp        0     36 172.16.247.46:22        171.14.145.224:32371    ESTABLISHED
tcp        0      0 172.16.247.46:22        171.14.145.224:32732    ESTABLISHED
$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN   //说明tomcat已经启动
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN
$ netsate -an | grep  ESTABLISHED | wc -l   统计建立的连接数 

网络通信命令

  • ping [选项] ip或域名 : 探测指定IP或域名的网络状况. ( -c 次数:指定ping包的次数)
  • telnet [ip或域名] [端口] : 远程管理与端口探测命令。由于telnet明文传输,不建议用于远程管理,但可以探测端口是否开启。
  • traceroute [选项] ip或域名 : 路由跟踪命令(采用ICMP协议,-n 使用IP,不使用域名,速度更快
  • wget命令:下载命令

Linux环境变量

Linux环境变量设置

  • /etc/environment : 设置整个系统的环境。

img

  • /etc/profile : 此文件为所有用户设置环境信息。当用户第一次登录时,该文件被执行。
  • /etc/bashrc : 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。
  • ~/.bash_profile : 文件为单个用户设置环境信息。当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
  • ~/.bashrc : 当登录时以及每次打开新的shell时,该文件被读取。(zsh配置 ~/.zshrc)
  • ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件。
  • export: 设置临时变量。终端关闭时失效。
相关文章
|
弹性计算 网络协议 安全
【图文教程】阿里云服务器开放端口设置(超详细)
阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
48951 2
|
Ubuntu Linux
在Linux中如何解压 .xz 和 tar.xz 文件?
【4月更文挑战第17天】
17541 6
在Linux中如何解压 .xz 和 tar.xz 文件?
|
算法 调度
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
详解操作系统四大常用的作业调度算法(FCFS丨SJF丨HRRN丨RR)
8890 0
|
Java fastjson API
Springboot 整合 xxljob 动态API调度任务(进阶篇)
Springboot 整合 xxljob 动态API调度任务(进阶篇)
8914 0
Springboot 整合 xxljob 动态API调度任务(进阶篇)
|
前端开发 JavaScript 应用服务中间件
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
跨域问题是前端开发中常见且棘手的问题,但通过理解CORS的工作原理并应用合适的解决方案,如服务器设置CORS头、使用JSONP、代理服务器、Nginx配置和浏览器插件,可以有效地解决这些问题。选择合适的方法可以确保应用的安全性和稳定性,并提升用户体验。
9657 90
|
网络协议 Java 应用服务中间件
解决java.net.ConnectException: Connection refused:connect报错
解决java.net.ConnectException: Connection refused:connect报错
8288 1
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
人工智能 前端开发 API
MoneyPrinterTurbo:23.9K Star!这个AI把写文案+找素材+剪视频全包了,日更10条不是梦
MoneyPrinterTurbo 是一款功能强大的 AI 工具,支持通过主题或关键词自动生成视频文案、素材、字幕与背景音乐,并合成高清短视频,适合批量生成与多语言支持。
2535 4
|
文字识别 自然语言处理 数据可视化
Qwen2.5 全链路模型体验、下载、推理、微调、部署实战!
在 Qwen2 发布后的过去三个月里,许多开发者基于 Qwen2 语言模型构建了新的模型,并提供了宝贵的反馈。在这段时间里,通义千问团队专注于创建更智能、更博学的语言模型。今天,Qwen 家族的最新成员:Qwen2.5系列正式开源
Qwen2.5 全链路模型体验、下载、推理、微调、部署实战!
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
4599 2

热门文章

最新文章