4、Windows排查工具:使用 resource monitor (resmon) 图形化查看

说实话,很多运维兄弟一遇到端口问题,第一反应就是开命令行敲 netstat -ano。这招确实管用,但如果你面对的是几十个端口同时异常,或者要跟业务方解释“到底谁占了端口”,光靠命令行就有点吃力了。

我个人习惯是,先上命令行快速定位,再用图形化工具做深入分析。Windows 自带的 Resource Monitor(资源监视器),就是那个被很多人忽略的“瑞士军刀”。

4.1 怎么打开 Resource Monitor

方法不止一种,我常用的就两个:

  • 快捷键流:Win + R 输入 resmon,回车。这是最快的。
  • 任务管理器入口:打开任务管理器 → 性能选项卡 → 底部“打开资源监视器”。

打开之后你会看到四个选项卡:CPU、内存、磁盘、网络。端口问题,我们直奔网络选项卡。

小技巧:如果你在远程桌面里操作,resmon 的启动速度比 perfmon 快得多。我远程排查时基本只用它。

4.2 网络选项卡的核心视图

进入网络选项卡后,你会看到四个子区域。别被密密麻麻的数据吓到,我们只关注两个:

区域名称 作用 我的用法
进程 列出所有有网络活动的进程 先勾选可疑进程,下面会自动过滤
TCP 连接 显示所有 TCP 连接详情 直接看本地端口、远程地址、状态
侦听端口 显示正在监听的端口 排查端口占用时最常用
活动连接 显示已建立的连接 排查异常外联时用

嗯,这里要注意:侦听端口这个区域默认是折叠的,你需要点开它。我第一次用的时候找了半天,后来才发现要手动展开。

4.3 实战:用 resmon 定位端口占用

假设你的应用报错“端口 8080 被占用”。用 resmon 怎么查?

  1. 打开 resmon,切换到网络选项卡。
  2. 展开侦听端口区域。
  3. 在列表上方的搜索框里输入 8080。
  4. 结果瞬间过滤出来——你会看到占用 8080 的进程名、PID、协议、绑定地址。

举个例子,我曾经遇到一个 case:某 Java 应用启动报端口冲突,用 netstat -ano | findstr 8080 查到 PID 是 1234,但任务管理器里 1234 这个进程一闪而过,根本看不清是谁。用 resmon 就简单了——勾选那个进程,下面直接显示它的所有连接、模块、甚至句柄。原来是某个监控 agent 偷偷占用了端口。

核心优势:resmon 把进程和端口做了双向关联。你点一个进程,下面所有端口一目了然;你点一个端口,归属进程立刻高亮。这种交互方式,命令行做不到。

4.4 比命令行强在哪?

我总结了几点 resmon 的独特价值:

  • 实时过滤:输入端口号或进程名,结果秒级刷新。不用反复敲命令。
  • 进程树查看:右键进程 → “分析进程链”,能看到父进程是谁。我曾经靠这个发现某个端口是被一个“伪装成系统服务的子进程”占用的。
  • 一键结束进程:右键 → “结束进程”,比任务管理器还快。但小心别把系统进程杀了。
  • 网络活动图表:顶部的 TCP 连接数曲线图,能直观看到端口连接数的波动。排查端口耗尽问题时特别有用。
避坑指南:resmon 的“结束进程”是强杀,不会给进程任何清理机会。我曾经手滑结束了一个数据库连接池的进程,导致连接未释放。建议只用它来查看,真要杀进程还是用任务管理器或 taskkill 加 /f 参数。

4.5 一个完整的排查流程

我通常的套路是这样的:

  1. 业务反馈端口连不上 → 我打开 resmon。
  2. 在侦听端口里搜目标端口 → 发现端口没在监听。
  3. 切换到活动连接,搜目标端口 → 发现大量 TIME_WAIT 状态的连接。
  4. 点开进程区域,勾选疑似进程 → 看到它的连接数曲线在飙升。
  5. 右键进程 → “分析进程链” → 发现是某个定时任务脚本在疯狂创建短连接。

整个过程不到 2 分钟。如果用命令行,你得来回切换窗口、记 PID、查进程名,至少多花一倍时间。

4.6 知识体系图

下面这张图帮你理清 resmon 排查端口占用的核心逻辑:

Resource Monitor 端口排查流程图 Resource Monitor 端口排查流程 打开 resmon 切换到网络选项卡 展开「侦听端口」区域 搜索目标端口号 是否找到? 查看进程名和 PID 检查活动连接 右键分析进程链 查看 TIME_WAIT 状态 定位到占用进程 → 决策处理 搜索框支持模糊匹配

4.7 什么时候该用 resmon?

不是所有场景都适合用图形化工具。我自己的选择标准是这样的:

场景 推荐工具 理由
快速查一个端口 netstat -ano 一行命令搞定,不用开 GUI
排查多个端口关联问题 resmon 可视化关联,一目了然
远程服务器(无 GUI) 命令行 resmon 依赖桌面环境
分析端口占用趋势 resmon 实时曲线图比数字直观
向非技术人员解释 resmon 截图给对方看,比贴命令行输出好理解

说白了,resmon 和命令行是互补关系,不是替代关系。我自己的习惯是:命令行定位,resmon 深挖。两者结合,端口问题基本没有查不出来的。