排查相同 Windows Server 环境之间的内存消耗问题

本文可帮助你测量和比较相同服务器环境之间的内存消耗量。 目标是通过建立基线、在同一时间段收集数据并确保系统具有相同工作负荷,从而达到基于数据的结论(DBC)。

先决条件

  • 在两台服务器上创建性能监视器数据收集器集。
  • 确保可以从每个服务器环境收集数据跟踪。
  • 了解不同的用户工作负荷及其对资源使用情况的影响。

快速解决方法:重启服务器

  1. 重启这两个服务器以清除任何内存使用情况。
  2. 在重新启动后监视预定义时间段的内存消耗量。

测量内存性能

使用 Vanilla 安装建立基线

在一台服务器上执行 Vanilla 安装。 在正常工作日收集 8 小时性能监视器跟踪。

从系统收集数据

在与 vanilla 安装相同的时间段内,从两个附加系统(指定为客户端 A 和客户端 B)收集 8 小时性能监视器跟踪。

理想情况下,我们有以下三个数据集从同一时间段进行比较:

  • 香草味
  • 客户端 A
  • 客户端 B

分析用户工作负荷影响

  1. 确定每个环境的工作负荷类型(浅、中、重或电源)。
  2. 使用会话主机虚拟机大小调整指南提供的示例对用户工作负荷进行分类。
    • 浅色:基本数据输入任务(例如数据库输入应用程序)。
    • 中:使用静态网页和Microsoft Word 进行市场研究等任务。
    • 繁重:涉及动态网页、Microsoft Outlook 和 PowerPoint 的软件开发。
    • Power:使用照片或视频编辑工具进行图形设计或 3D 建模。
  3. 使用以下性能计数器对象比较系统上的活动:
    • 内存
    • CPU
    • 磁盘活动
    • 进程数
    • 会话数

比较内存的关键性能计数器

  • 可用 MBytes:剩余可用 RAM
  • 正在使用的已提交字节百分比:已分配的物理资源
  • 池分页字节数:可以分页的内核内存
  • 池非分页字节:无法分页的内核内存
  • 缓存字节数:磁盘使用情况内核内存
  • 工作集:RAM 中的活动进程内存

影响资源使用情况的不同工作负荷

不同的用户工作负荷会导致物理资源(如 CPU、RAM 和存储)的不同要求。

解决方案:根据数据收集标准化用户行为

识别从 Vanilla 安装、客户端 A 和客户端 B 收集的所有跟踪中的类似使用模式。

通过查看类似条件下的性能计数器,确保工作负荷可比性:

计数器 Vanilla 安装 客户端 A 客户端 B
提交的在用字节数百分比 X% Y% Z%
可用 MB 数 X Y Z
Process\Working Set_Total X Y Z

通过相应地调整资源分配或优化应用程序来解决差异。

方案指南:使用性能计数器比较系统

使用表通过前面部分中提到的计数器来比较三个系统(vanilla、client A 和 client B)。

计数器 Vanilla 安装 客户端 A 客户端 B
提交的在用字节数百分比 28.5% 42.7% 83%
可用 MBytes (最小值) 10.8 GB 7.5 GB 2.6 GB
工作集_Total) (最大值) 5.2 GB 8.7 GB 15.8 GB

结果似乎确认了不同的用户加载行为。 还可以通过检查进程数来确认结果:

计数器 Vanilla 安装 客户端 A 客户端 B
系统\进程 (最大值) 199 268 338

若要进一步确认,可以使用 CPU 使用率计数器 处理器\% 空闲时间_Total),来标识不同的用户负载模式。 下面是一些示例的屏幕截图(第一个用于 Vanilla 安装,第二个用于客户端 A,第三个用于客户端 B)。

香草:
vanilla 安装上的性能监视器跟踪的屏幕截图。

客户端 A:
客户端 A 上性能监视器跟踪的屏幕截图。

客户端 B:
客户端 B 上的性能监视器跟踪的屏幕截图。

若要进一步深入了解用户加载行为,请尝试检查以下过程:

  • Outlook
  • Office
  • Teams(使用 Teams 流程,有 msedgewebview2 流程)
  • Microsoft Edge
  • 非Microsoft浏览器

数据收集

如果仍需要Microsoft 支持部门的帮助,以便进一步分析和指导,请与我们联系以获取全面的日志。

若要在较长时间内准备所有性能计数器的详细日志,请执行以下步骤:

  • 如果要比较,请确保记录相同的时间和持续时间。

  • 运行以下命令,创建覆盖自身的八小时性能数据收集器集:

    Logman.exe create counter PerfLog-30Sec-%ComputerName% -o "c:\perflogs\%computername%_PerfLog-30sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:30
    

    仍需手动启动数据收集器集。