可直接用Windows内置性能计数器实时监控进程句柄数:在perfmon中添加Process对象的Handle Count计数器,支持多进程选择、阈值告警、数据导出及历史回溯,需管理员权限并注意实例动态性与句柄类型不可分。
可以直接用windows内置的性能计数器(performance counters)实时监控服务器上每个进程的句柄数变化,无需安装第三方工具,数据准确、延迟低、支持历史趋势回溯。
启用并查看句柄性能计数器
Windows系统默认已提供“Process”性能对象下的Handle Count计数器,它对应每个运行中进程的当前打开句柄数量。操作步骤如下:
- 按 Win + R 输入
perfmon,打开“性能监视器” - 左侧导航至“性能监视器”,右键“性能监视器”节点 → “添加计数器…”
- 在“从计算机”下拉选目标服务器(本地可选“localhost”)
- 在“性能对象”中选择 Process,勾选下方的 Handle Count
- 点击“添加”后,在“实例”列表中可多选具体进程(如
explorer、svchost#1、sqlservr等),或选_Total查看全系统句柄总数 - 点击“确定”,图表即开始实时刷新
设置告警与数据导出
性能计数器支持阈值触发告警和日志持久化,适合长期运维场景:
- 右键图表空白处 → “属性” → 切换到“数据”选项卡,可设置采样间隔(建议 5–30 秒)
- 在“警报”选项卡中,可为某进程的 Handle Count 设置上限阈值(例如
explorer超过 15000 持续 3 次采样则触发) - 告警动作支持:记录事件日志、运行程序(如发邮件脚本)、播放声音等
- 通过“数据收集器集”可将句柄数据自动写入二进制(.blg)或CSV文件,便于后续用Excel或Power BI分析趋势
注意事项与常见问题
该方法依赖系统内建机制,但有几点必须注意:
- 权限要求:需以管理员或 Performance Monitor Users 组成员身份运行 perfmon,否则可能看不到部分系统进程(如 lsass、services)
- 进程名动态性:svchost、conhost 等会生成多个带编号的实例(如 svchost#3),添加时需确认 PID 或结合任务管理器比对
- 不显示句柄类型:性能计数器只提供总数,无法区分是文件、注册表还是线程句柄;若需定位泄漏源,应配合 Process Explorer 或 Handle 工具深入查看
- 句柄增长≠泄漏:正常业务高峰(如IIS并发请求激增)也可能导致句柄数上升,需结合持续增长趋势+进程生命周期综合判断



















