要用perfmon长期掌握windows服务器内存变化规律,需配置数据收集器集记录% committed bytes in use、available mbytes、pages/sec和working set等关键计数器,采样间隔20–30秒,日志存为.blg格式并启用按天连续采集,再通过查看器叠加分析趋势、导出csv做统计,并结合resmon和powershell实时验证与告警。
要长期掌握 windows 服务器内存占用的变化规律,不能只看某一时点的“高不高”,而要观察它“怎么变”——比如是否在每天固定时间陡升、是否缓慢爬升后突然崩溃、是否伴随硬错误激增。核心方法是用系统自带的性能监视器(perfmon)搭建轻量、稳定、可回溯的趋势记录体系。
配置数据收集器集,实现自动长期记录
这是最可靠的趋势监控方式,不依赖第三方软件,日志格式紧凑,支持后期多维度叠加分析:
- 打开 perfmon.msc → 左侧展开“数据收集器集” → 右键“用户定义” → “新建” → “手动创建”
- 名称建议带日期和用途,例如 MemTrend_202606;勾选“性能计数器”
- 关键计数器必须包含:
– \Memory\% Committed Bytes In Use(内存提交使用率,反映真实压力)
– \Memory\Available MBytes(可用物理内存,低于 500 MB 即需预警)
– \Memory\Pages/sec(页面交换频率,持续高于 20 表明频繁换页)
– \Process(_Total)\Working Set(所有进程工作集总和,验证任务管理器读数一致性) - 采样间隔设为 20–30 秒:太密易撑满磁盘,太疏会漏掉短时峰值
- 日志路径选有足够空间的非系统盘(如 D:\PerfLogs),格式选 二进制 (.blg)
- 在“计划”选项卡中启用“按天创建新日志”和“连续运行”,确保不间断采集
查看与分析历史趋势图
记录运行数天后,就能直观识别模式问题:
- 停止收集器 → 在 perfmon 中右键该数据集 → “属性” → 切换到“查看器”选项卡 → 点击“添加”加载 .blg 文件
- 把多个计数器拖入同一图表区域,例如将 % Committed Bytes In Use 和 Pages/sec 叠加显示:若两者同步冲高,基本可断定是物理内存不足引发换页风暴
- 用鼠标框选某段异常区间 → 右键“属性” → 查看该时段内各计数器最小/最大/平均值,快速定位拐点数值
- 导出为 CSV 后,可用 Excel 或 Python 做进一步统计,比如计算每日内存使用率的 95 分位值,作为动态阈值参考
结合实时工具做交叉验证
趋势监控负责“看走势”,但无法实时干预。需搭配资源监视器(resmon)和 PowerShell 快速响应:
- 当趋势图发现某天凌晨 3 点内存使用率突增 40%,立刻远程登录,打开 资源监视器 → 内存页签,按“工作集(KB)”排序,检查是否有备份服务、索引进程或未预期的脚本正在运行
- 运行 PowerShell 命令快速提取当时前 5 名内存进程详情:
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, Id, WorkingSet, Path -First 5 - 若发现 svchost.exe 占用异常高,再用 tasklist /svc /fi "pid eq XXXX"(替换 XXXX 为对应 PID)查清它承载的具体服务名
设置基础告警避免被动响应
光看图不够,要让系统主动提醒:
- 在 perfmon 中新建“警报” → 添加计数器 \Memory\Available MBytes
- 设置“当值小于”600(单位 MB)时触发 → 操作选择“启动程序”,可调用 PowerShell 脚本自动发邮件或写入事件日志
- 同样为 \Memory\Pages/sec 设置“大于 30 持续 5 分钟”的条件告警,这类持续换页往往预示服务即将不可用
- 注意:告警阈值需结合服务器实际内存总量调整,8 GB 机器和 64 GB 机器的“安全底线”完全不同











