Linux怎么查看具体的网络连接状态异常关闭的统计分析

大婷酱_9076

大婷酱_9076

2026-08-23

191人浏览

原创

查tcp连接状态分布应优先使用netstat -s或ss -s获取内核原始统计,重点关注close-wait异常堆积(需ss -tanp定位pid),time_wait高需先验证端口耗尽,单进程socket泄漏用lsof -itcp -stcp:close_wait分析。

linux怎么查看具体的网络连接状态异常关闭的统计分析

查 TCP 连接状态分布用 netstat -s 或 ss -s

直接看全局连接状态计数,netstat -s 和 ss -s 是最轻量、最权威的入口。它们输出的是内核网络栈的原始统计,不依赖进程权限,也不受连接数上限限制。

关键不是“有多少连接”,而是“哪些状态在异常堆积”:

  • netstat -s | grep -A 5 "Tcp:" 能看到 active connections openings(主动建连)、passive connection openings(被动建连)、failed connection attempts(建连失败)等基础指标
  • ss -s 输出更简洁,第一行就带总连接数和各状态汇总,例如 TCP: time_wait 12456、CLOSE-WAIT 892
  • 注意区分大小写:CLOSE-WAIT 是标准写法,close_wait 在 awk/grep 中常忽略大小写,但状态字段本身是大写

定位 CLOSE-WAIT 连接归属进程必须用 ss -tanp

CLOSE-WAIT 多意味着本机应用收到对方 FIN 后没调 close(),这是代码级泄漏,不能靠调参解决。必须锁定 PID 才能追根溯源。

执行 ss -tanp state close-wait(需 root 权限),输出每行含:源 IP:端口、目标 IP:端口、状态、PID/程序名。常见陷阱:

  • 没加 -p 就看不到进程,白查;加了但没 root 权限,PID 列显示为 - 或报 permission denied
  • 某些容器或 systemd 服务会显示为 dockerd 或 systemd,得再用 ps -p <pid> -o comm=,cmd=</pid> 看真实命令路径
  • 如果同一 PID 下有大量 CLOSE-WAIT,优先检查该进程的日志(如 journalctl -u xxx --since "10 minutes ago")和连接池配置

TIME_WAIT 高是否真影响服务?先验证端口耗尽再行动

TIME_WAIT 本身不是问题,Linux 默认允许复用 TIME_WAIT 套接字(net.ipv4.tcp_tw_reuse = 1 且 net.ipv4.tcp_timestamps = 1)。真正卡住的是“本地端口不够用”。

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载

验证方法分两步:

  • 查当前可用端口范围:cat /proc/sys/net/ipv4/ip_local_port_range(默认通常是 32768 60999,共约 28K 端口)
  • 统计已用本地端口频次:ss -ant | awk '{print $4}' | cut -d':' -f2 | sort | uniq -c | sort -nr | head -5 —— 如果前几名全是同一端口(比如 52043 出现上万次),说明短连接风暴集中打向单一后端,不是系统瓶颈,是业务设计问题
  • 若 Cannot assign requested address 错误频繁出现,且 ss -ant | wc -l 接近端口上限,才考虑调优,否则别碰 tcp_tw_reuse

用 lsof 查单个进程的 socket 泄漏细节

当确认某个 PID 的 CLOSE-WAIT 持续增长,lsof -iTCP -sTCP:CLOSE_WAIT -n -P -p <pid></pid> 可列出该进程所有未关闭的 TCP socket,包括远端地址、inode 号、文件描述符编号。

这个输出能帮你判断泄漏模式:

  • 远端 IP 高度集中 → 某个下游服务响应慢或不发 FIN,上游没设超时
  • 远端 IP 分散但 FD 编号持续递增 → 应用层每次 new connection 都没 close,典型忘记 defer 或 try/finally
  • 同一 inode 出现多次 → 可能是连接复用失效(如 HTTP client 未启用 keepalive)

真正难缠的不是状态数字本身,而是那些 CLOSE-WAIT 连接背后僵死的 goroutine、Java thread 或 Python asyncio task——它们不占 CPU,但锁着 fd、内存和连接上下文,日积月累才拖垮服务。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3650

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3173

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2233

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5370

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5042

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3013

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2505

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2719

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习