怎么在Linux利用Lsof-I实时监控由于网络IO导致的进程状态挂起与端口阻塞

大萱大大_6486

大萱大大_6486

2026-06-06

908人浏览

原创

lsof -i 是快照式诊断工具,不能实时监控或直接判断进程是否因网络i/o挂起;需结合 ps、/proc/pid/stack、strace 等交叉验证,并用 ss、/proc/net/snmp 或 ebpf 工具实现真正监控。

怎么在linux利用lsof-i实时监控由于网络io导致的进程状态挂起与端口阻塞

lsof -i 本身不提供“实时监控”能力,也不能直接判断进程是否因网络 I/O 挂起或端口“阻塞”(注意:端口不会阻塞,是进程在监听/连接时被卡住)。它是一个快照式诊断工具,用于查“此刻谁在用哪个端口、处于什么连接状态”。所谓“网络 IO 导致进程挂起”,本质是进程在 socket 系统调用(如 recvfrom、accept、connect)上阻塞——这属于进程运行态问题,需结合 lsof 输出 + 进程状态 + 系统调用追踪综合判断。

确认进程是否真在阻塞式网络 I/O 上挂起

仅靠 lsof -i 输出无法得知进程是否卡住。需配合以下方法交叉验证:

  • 用 ps -o pid,stat,comm -p PID 查看进程状态:若 STAT 列含 D(不可中断睡眠),说明它正卡在内核态 I/O(如磁盘或某些驱动),但网络 socket 阻塞通常表现为 S(可中断睡眠);
  • 用 cat /proc/PID/stack(需 root)查看内核栈:若栈顶是 tcp_recvmsg、inet_csk_accept 或 sys_connect,基本可判定进程正阻塞在网络系统调用上;
  • 用 strace -p PID -e trace=recvfrom,sendto,accept,connect 实时观察系统调用行为:若长时间无返回、或反复返回 EAGAIN/EWOULDBLOCK(非阻塞模式下)或干脆停住不动(阻塞模式下),就是典型挂起迹象。

用 lsof -i 辅助定位可疑连接与监听异常

虽然不能直接“监控挂起”,但 lsof -i 能快速暴露易引发挂起的配置或状态问题:

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载
  • lsof -iTCP -sTCP:LISTEN -P -n:列出所有 TCP 监听端口,检查是否有多个进程监听同一端口(冲突)、或本不该监听的端口被意外打开(如开发环境残留服务);
  • lsof -i @192.168.1.100 -P -n:查看与特定远端 IP 的所有连接,若发现大量 SYN_SENT(连接未建立成功)或 FIN_WAIT2(连接关闭异常残留),可能预示对方不可达或防火墙拦截,导致 connect() 或 close() 长时间阻塞;
  • lsof -i :8080 -P -n + 观察 STATE 列:若看到大量 ESTABLISHED 但无数据交互,或大量 CLOSE_WAIT(对端已关闭,本端未调用 close),往往是应用层未正确处理连接生命周期,最终耗尽 socket 资源,间接造成新连接 accept() 阻塞。

构建轻量级“准实时”排查链路(非轮询监控)

不推荐用 while 循环跑 lsof 做“监控”(开销大、信息冗余)。更实用的是按需触发的组合命令:

  • 发现服务响应慢时,一键查端口+进程+状态:
    sudo lsof -i :8080 -P -n; echo "---"; ps -o pid,ppid,stat,comm,user,etime -p $(lsof -ti:8080 2>/dev/null); echo "---"; ss -tulnp | grep ':8080'
  • 检测是否存在“僵尸监听”(进程已死但端口未释放):
    sudo lsof -iTCP -sTCP:LISTEN -P -n | awk '$9 ~ /:[0-9]+$/ {print $2,$9}' | while read pid port; do [ -d "/proc/$pid" ] || echo "PID $pid gone but port $port still shows"; done
  • 配合 timeout 防止阻塞命令拖慢排查:
    timeout 3s strace -p $(lsof -ti:8080) -e trace=accept,recvfrom 2>&1 | tail -5(捕获最近几条关键调用)

真正需要监控时,应换用专业工具

若业务要求持续观测网络 I/O 阻塞趋势,lsof 不是合适选择。推荐:

  • ss -i:显示 socket 内部统计(如 retrans、rto、qsize),反映真实网络拥塞与重传压力;
  • /proc/net/snmp 与 /proc/net/netstat:解析 TCP 全局指标(如 PassiveOpens、AttemptFails、EstabResets),识别协议层异常;
  • Prometheus + node_exporter:采集 socket 指标(node_netstat_Tcp_CurrEstab、node_sockstat_TCP_alloc)并设告警;
  • eBPF 工具(如 bpftrace / tcplife):无侵入跟踪每个 TCP 连接生命周期,精准定位超时、重传、零窗等根因。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2712

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2456

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4552

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习