监控应用性能计数器是定位windows资源异常的核心手段,perfmon可图形化添加.net、sql server、iis等应用级计数器,typeperf支持命令行采集,resmon联动验证上下文,数据收集器集建立长期基线。
监控应用性能计数器是定位 windows 资源异常占用的核心手段,它比任务管理器更精准、比 powershell 快照更可持续,尤其适合识别间歇性高负载、内存泄漏或服务级 i/o 瓶颈。
用 perfmon 添加关键应用级计数器
性能监视器(perfmon)是查看应用性能计数器的首选图形界面。它不只监控系统整体,还能深入到具体服务、.NET 应用、SQL Server 实例甚至 IIS 网站层级:
- 启动后,在左侧导航栏点击“性能监视器”,右键图表区域 → “添加计数器”
- 在“可用计数器”中展开对应对象,例如:
• .NET CLR Memory → % Time in GC(垃圾回收耗时占比,持续 >10% 可能存在内存压力)
• Process → % Processor Time(选具体进程名如chrome或java,而非 _Total)
• SQLServer:Buffer Manager → Page life expectancy(页生命周期,低于 300 秒提示内存不足)
• W3SVC_W3WP → Request Execution Time(IIS 应用池响应延迟) - 添加后点击“确定”,图表即开始绘制该应用的实时行为曲线
用 typeperf 命令行采集应用计数器快照
当需自动化、无界面或导出数据做趋势分析时,typeperf 是轻量高效的命令行方案。它支持精确指定进程实例、采样间隔和输出格式:
- 先查清目标进程是否已注册为 Performance Counter 实例:运行
typeperf -qx Process,在结果中找你的进程名(如Teams、devenv) - 采集该进程的 CPU 和私有字节内存:
typeperf "\Process(Teams)\% Processor Time" "\Process(Teams)\Private Bytes" -si 2 -sc 30 -o team_perf.csv
(每 2 秒采一次,共 30 次,保存为 CSV) - 若进程名含空格或特殊字符(如
Microsoft Edge),需用英文引号包裹整个路径:"\Process(Microsoft Edge)\Working Set"
通过资源监视器(resmon)联动验证应用行为
perfmon 和 typeperf 给的是数值,而 resmon 提供上下文——它能把计数器异常直接关联到线程、句柄、磁盘文件甚至网络连接,避免“知道高,但不知为何高”:
- 启动
resmon,切换到“CPU”选项卡,按“% CPU”排序,找到目标应用进程 - 右键该进程 → “转到服务”,看它是否托管了可疑 Windows 服务(如 SysMain、Superfetch)
- 切到“磁盘”选项卡,勾选“响应时间”列,若某进程磁盘响应 >50ms 且读写频繁,说明它正触发大量随机 I/O(常见于日志轮转或数据库写入)
- 切到“网络”选项卡,点击“发送 (B/sec)”排序后右键 → “转到进程”,可反向从高流量定位到具体应用及其绑定端口
创建数据收集器集实现长期基线对比
单次监控无法判断“是否异常”。要确认某个应用计数器值是否真的超标,需建立历史基线。perfmon 的数据收集器集支持自动记录多天数据,并支持与警报联动:
- 在 perfmon 左侧 → “数据收集器集” → “用户定义” → 右键新建 → 选择“手动创建(高级)”
- 添加计数器时,除系统级指标外,务必加入目标应用相关项,例如:
•\Process(Outlook)\Thread Count(线程数突增常预示卡死)
•\.NET CLR Exceptions(# of Exceps Thrown / sec)(异常抛出速率骤升可能引发性能抖动) - 设置采样间隔为 15–30 秒,日志格式选 二进制 (.blg)(兼容性好、体积小)
- 运行数天后,右键该收集器 → “属性” → “查看报告”,即可生成带时间轴的趋势图,方便对比更新前后、工作日与周末的差异











