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 怎么查?
- 打开 resmon,切换到网络选项卡。
- 展开侦听端口区域。
- 在列表上方的搜索框里输入
8080。 - 结果瞬间过滤出来——你会看到占用 8080 的进程名、PID、协议、绑定地址。
举个例子,我曾经遇到一个 case:某 Java 应用启动报端口冲突,用 netstat -ano | findstr 8080 查到 PID 是 1234,但任务管理器里 1234 这个进程一闪而过,根本看不清是谁。用 resmon 就简单了——勾选那个进程,下面直接显示它的所有连接、模块、甚至句柄。原来是某个监控 agent 偷偷占用了端口。
4.4 比命令行强在哪?
我总结了几点 resmon 的独特价值:
- 实时过滤:输入端口号或进程名,结果秒级刷新。不用反复敲命令。
- 进程树查看:右键进程 → “分析进程链”,能看到父进程是谁。我曾经靠这个发现某个端口是被一个“伪装成系统服务的子进程”占用的。
- 一键结束进程:右键 → “结束进程”,比任务管理器还快。但小心别把系统进程杀了。
- 网络活动图表:顶部的 TCP 连接数曲线图,能直观看到端口连接数的波动。排查端口耗尽问题时特别有用。
taskkill 加 /f 参数。
4.5 一个完整的排查流程
我通常的套路是这样的:
- 业务反馈端口连不上 → 我打开 resmon。
- 在侦听端口里搜目标端口 → 发现端口没在监听。
- 切换到活动连接,搜目标端口 → 发现大量
TIME_WAIT状态的连接。 - 点开进程区域,勾选疑似进程 → 看到它的连接数曲线在飙升。
- 右键进程 → “分析进程链” → 发现是某个定时任务脚本在疯狂创建短连接。
整个过程不到 2 分钟。如果用命令行,你得来回切换窗口、记 PID、查进程名,至少多花一倍时间。
4.6 知识体系图
下面这张图帮你理清 resmon 排查端口占用的核心逻辑:
4.7 什么时候该用 resmon?
不是所有场景都适合用图形化工具。我自己的选择标准是这样的:
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 快速查一个端口 | netstat -ano |
一行命令搞定,不用开 GUI |
| 排查多个端口关联问题 | resmon | 可视化关联,一目了然 |
| 远程服务器(无 GUI) | 命令行 | resmon 依赖桌面环境 |
| 分析端口占用趋势 | resmon | 实时曲线图比数字直观 |
| 向非技术人员解释 | resmon | 截图给对方看,比贴命令行输出好理解 |
说白了,resmon 和命令行是互补关系,不是替代关系。我自己的习惯是:命令行定位,resmon 深挖。两者结合,端口问题基本没有查不出来的。