使用性能诊断 (PerfInsights) CLI 工具排查 Windows 虚拟机性能问题

适用于:✔️ Windows VM

性能诊断(PerfInsights)扩展是一种自助诊断工具,用于收集和分析诊断数据,并提供报告来帮助排查 Azure 中的 Windows 虚拟机(VM)性能问题。 使用性能诊断在以下两种模式之一中识别和排查性能问题:

  • 连续诊断(预览版)每隔五秒钟收集一次数据,每隔五秒钟报告一次有关资源使用率较高的可操作见解。
  • 按需诊断有助于根据单个时间点收集的数据并使用更深入的数据、见解和建议对持续出现的性能问题进行故障排除。

本文介绍如何将性能诊断扩展下载到 Windows VM 并使用 CLI 工具运行该工具。 还可以 从门户运行性能诊断,并使用 ARM 模板或 PowerShell 部署性能诊断扩展。

如果虚拟机遇到性能问题,请在联系支持人员之前运行性能诊断。

支持的故障排除方案

可以使用性能诊断对各种方案进行故障排除。 以下部分介绍使用持续和按需性能诊断来识别和排查性能问题的常见方案。 有关连续和按需性能诊断的比较,请参阅 性能诊断见解和报告

注意

有关跨 Azure 虚拟机规模集使用 PerfInsights 的信息,请参阅 PerfInsights 和规模集 VM 实例

连续诊断

通过持续性能诊断,可以通过定期监视 VM 来识别高资源使用率:

  • CPU 使用率高:检测高 CPU 使用率周期,并显示这些时间段内 CPU 使用率最高的使用者。
  • 高内存使用率:检测高内存使用周期,并显示这些时间段内内存使用率最高的使用者。
  • 高磁盘使用率:检测物理磁盘上的磁盘使用率高,并显示这些时间段内磁盘使用率最高的使用者。

按需诊断

快速分析

此方案收集磁盘配置和其他重要信息,包括:

  • 事件日志

  • 所有传入和传出连接的网络状态

  • 网络和防火墙配置设置

  • 任务列表,用于当前在系统中运行的所有应用程序

  • Microsoft SQL Server 数据库配置设置(前提是已确定 VM 为运行 SQL Server 的服务器)

  • 存储可靠性计数器

  • 重要的 Windows 修补程序

  • 已安装的筛选器驱动程序

这属于被动收集信息,不会影响系统。

注意

此方案自动包括在下述每个方案中。

基准测试

此方案针对所有附加到 VM 的驱动器运行 Diskspd 基准测试(IOPS 和 MBPS)。

注意

此方案可能会影响系统,不应在实时生产系统上运行。 必要时可在专用维护时段运行此方案,以免出现问题。 因跟踪或基准测试而导致工作负荷增加时,可能会对 VM 性能造成负面影响。

性能分析

此方案使用在 RuleEngineConfig.json 文件中指定的计数器运行性能计数器跟踪。 如果 VM 确定为运行 SQL Server 的服务器,则会运行性能计数器跟踪。 通过使用在 RuleEngineConfig.json 文件中找到的计数器,它也会执行此操作。 此方案还包括性能诊断数据。

Azure 文件分析

此方案运行特殊的性能计数器捕获和网络跟踪。 捕获包括所有的“服务器消息块 (SMB) 客户端共享”计数器。 以下是一些关键的 SMB 客户端共享性能计数器,属于捕获的一部分:

类型 SMB 客户端共享计数器
IOPS 数据请求/秒
读取请求/秒
写入请求/秒
延迟 平均秒数/数据请求
平均秒数/读取操作
平均秒数/写入操作
IO 大小 平均字节/数据请求
Avg. Bytes/Read
Avg. Bytes/Write
吞吐量 数据字节/秒
读取字节/秒
写入字节/秒
队列长度 平均读取队列长度
平均写入队列长度
平均数据队列长度

高级性能分析

运行高级性能分析时,可选择要并行运行的跟踪。 如果需要,可以运行所有这些跟踪(性能计数器、Xperf、网络和 StorPort)。

注意

此方案可能会影响系统,不应在实时生产系统上运行。 必要时可在专用维护时段运行此方案,以免出现问题。 因跟踪或基准测试而导致工作负荷增加时,可能会对 VM 性能造成负面影响。

Windows 中性能诊断收集哪些信息?

将会收集有关 Windows VM、磁盘或存储池配置、性能计数器、日志和各种跟踪的信息。 这取决于所使用的性能方案。 下表提供了详细信息:

收集的数据 快速性能分析 基准测试 性能分析 Azure 文件分析 高级性能分析
事件日志中的信息
系统信息
卷映射
磁盘映射
正在运行的任务
存储可靠性计数器
存储信息
Fsutil 输出
筛选驱动程序信息
Netstat 输出
网络配置
防火墙配置
SQL Server 配置
性能诊断跟踪 *
性能计数器跟踪 **
SMB 计数器跟踪 **
SQL Server 计数器跟踪 **
Xperf 跟踪
StorPort 跟踪
网络跟踪
Diskspd 基准跟踪 ***

性能诊断跟踪 (*)

在后台运行基于规则的引擎即可收集数据并诊断当前的性能问题。 规则显示在“类别 -> 查找”选项卡下的报表中。

每个规则包含以下项:

  • 查找:查找的说明。
  • 建议:建议对查找采取哪些操作。 还提供了指向文档的参考链接,其中包含有关查找和/或建议的详细信息。
  • 影响级别:表示对性能产生影响的可能性。

当前支持以下类别的规则:

  • 资源使用率高:
    • CPU 使用率高:检测高 CPU 使用率周期,并显示这些时间段内 CPU 使用率最高的使用者。
    • 高内存使用率:检测高内存使用周期,并显示这些时间段内内存使用率最高的使用者。
    • 高磁盘使用率:检测物理磁盘上的磁盘使用率高,并显示这些时间段内磁盘使用率最高的使用者。
    • 高分辨率磁盘使用情况:显示每个物理磁盘每 50 毫秒 50 毫秒的 IOPS、吞吐量和 I/O 延迟指标。 此规则有助于快速确定磁盘限制期间。
  • 知识库:检测是否未安装特定的知识库(KB)文章。
  • 磁盘:检测特定的磁盘配置设置。
  • SQL:检测特定的 SQL 设置。
  • 网络:检测特定的网络设置。
  • 服务器群集:检测特定的服务器群集配置设置。
  • 系统:检测特定的系统配置设置。
  • CLR:检测托管进程上长时间的垃圾回收暂停。

注意

目前支持包含 .NET Framework 4.5 或更高版本的 Windows 版本。

性能计数器跟踪 (\*\*)

收集以下性能计数器:

  • \System、\Process、\Processor、\Memory、\Thread、\PhysicalDisk 和 \LogicalDisk
  • \Cache\Dirty Pages、\Cache\Lazy Write Flushes/sec、\Server\Pool Nonpaged、Failures 和 \Server\Pool Paged Failures
  • 在 \Network Interface、\IPv4\Datagrams、\IPv6\Datagrams、\TCPv4\Segments、\TCPv6\Segments、\Network Adapter、\WFPv4\Packets、\WFPv6\Packets、\UDPv4\Datagrams、\UDPv6\Datagrams、\TCPv4\Connection、\TCPv6\Connection、\Network QoS Policy\Packets、\Per Processor Network Interface Card Activity 和 \Microsoft Winsock BSP 下选定的计数器

适用于 SQL Server 实例

  • \SQL Server:Buffer Manager、\SQLServer:Resource Pool Stats 和 \SQLServer:SQL Statistics\
  • \SQLServer:Locks、\SQLServer:General、Statistics
  • \SQLServer:Access Methods

适用于 Azure 文件

\SMB Client Shares

Diskspd 基准跟踪 (***)

Diskspd I/O 工作负荷测试(OS 磁盘 [写入] 和池驱动器 [读/写])

使用 CLI 工具在 VM 上运行性能诊断

在运行此工具之前,必须了解什么?

工具要求

  • 此工具必须在有性能问题的 VM 上运行。

  • 支持下列操作系统:

    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 R2
    • Windows Server 2012
    • Windows 11
    • Windows 10

访问 SQL Server

如果 VM 上安装了 SQL Server 实例,PerfInsights 将使用帐户 NT AUTHORITY\SYSTEM 访问 SQL Server 实例以收集配置信息和运行规则。 帐户 NT AUTHORITY\SYSTEM 必须为每个实例授予视图服务器状态权限和连接 SQL 权限,否则 PerfInsights 将无法连接到 SQL Server,PerfInsights 报表不会显示任何 SQL Server 相关信息。

在生产 VM 上运行该工具时可能会出现的问题

  • 对于基准检验方案或配置为使用 Xperf 或 Diskspd 的“高级性能分析”方案,此工具可能会对 VM 性能造成不利影响。 不应在实时生产环境中运行这些方案。

  • 对于基准检验方案或配置为使用 Diskspd 的“高级性能分析”方案,请确保没有其他任何后台活动干扰 I/O 工作负载。

  • 默认情况下,此工具使用临时存储驱动器来收集数据。 如果跟踪保持启用状态较长的时间,则收集的数据量会与之相关。 这会降低临时磁盘上空间的可用性,因此可能影响任何依赖于该驱动器的应用程序。

如何运行 PerfInsights?

可以通过安装 Azure 性能诊断 VM 扩展在虚拟机上运行 PerfInsights。 也可以将其作为独立工具运行。

安装和运行来自 Azure 门户的 PerfInsights

有关此选项的详细信息,请参阅安装 Azure 性能诊断 VM 扩展

在独立模式下运行 PerfInsights

要运行 PerfInsights 工具,请按照以下步骤操作:

  1. 下载 PerfInsights.zip

  2. 取消阻止 PerfInsights.zip 文件。 为此,请右键单击 PerfInsights.zip 文件,并选择“属性”。 在“常规”选项卡上,选择“取消阻止”,然后选择“确定”。 此操作可确保该工具在没有任何其他安全提示的情况下运行。

    PerfInsights 属性的屏幕截图,其中突出显示了“取消阻止”。

  3. 将压缩的 PerfInsights.zip 文件展开到临时驱动器(默认情况下,通常为 D 驱动器)中。

  4. 以管理员身份打开 Windows 命令提示符,然后运行 PerfInsights.exe 以查看可用的命令行参数。

    cd <the path of PerfInsights folder>
    PerfInsights
    

    PerfInsights 命令行输出的屏幕截图。

    运行 PerfInsights 方案的基本语法是:

    PerfInsights /run <ScenarioName> [AdditionalOptions]
    

    使用 /list 命令查找所有可用的方案和选项:

    PerfInsights /list
    

    下面是如何使用 CLI 工具运行各种 故障排除方案的示例:

    • 运行持续性能诊断:

      PerfInsights /run always on /sau 
      

      若要停止连续性能诊断,请按 Ctrl+C 或关闭终端。

    • 运行性能分析方案 5 分钟:

      PerfInsights /run vmslow /d 300 /AcceptDisclaimerAndShareDiagnostics
      
    • 使用 Xperf 和性能计数器跟踪运行高级方案 5 分钟:

      PerfInsights /run advanced xp /d 300 /AcceptDisclaimerAndShareDiagnostics
      
    • 运行基准方案 5 分钟:

      PerfInsights /run benchmark /d 300 /AcceptDisclaimerAndShareDiagnostics
      
    • 运行性能分析方案 5 分钟,并将结果 zip 文件上传到存储帐户:

      PerfInsights /run vmslow /d 300 /AcceptDisclaimerAndShareDiagnostics /sa <StorageAccountName> /sk <StorageAccountKey>
      

    注意

    运行方案之前,PerfInsights 会提示用户同意共享诊断信息并同意 EULA。 使用“/AcceptDisclaimerAndShareDiagnostics”选项跳过这些提示

    如果具有 Microsoft 的活跃支持票证,以及根据所合作的支持工程师的请求正在运行的 PerfInsights,请确保使用 /sr 选项提供支持票证编号

    默认情况下,PerfInsights 将尝试将其更新到最新版本(如果可用)。 使用 /SkipAutoUpdate 或 /sau 参数跳过自动更新

    如果未指定持续时间开关 /d,PerfInsights 会在你运行慢速 VM 分析、Azure 文件分析和高级方案时提示重现此问题。

完成跟踪或操作后,PerfInsights 所在的文件夹中会出现一个新文件。 文件的名称PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.zip 可以将此文件发送到支持代理进行分析,或打开 zip 文件中的报告,以查看结果和建议。

查看诊断报告

PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.zip 文件中,可以找到详细说明 PerfInsights 发现结果的 HTML 报表。 若要查看报表,请展开 PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.zip 文件,然后打开 PerfInsights Report.html 文件。

选择“发现”选项卡。

PerfInsights 报表的“概述”选项卡下的“查找”选项卡的屏幕截图。

PerfInsights 报表的“存储”选项卡下的“查找”选项卡的屏幕截图。

注意

分类为“高”的发现结果是可能会导致性能问题发生的已知问题。 分类为“中等”的发现结果表示配置不是最佳,不一定会导致性能问题发生。 分类“低”的发现结果只是参考性陈述。

请查看所有分类为“高”和“中等”的发现结果的相关建议和链接。 了解这些发现结果对性能造成的影响,以及有关性能优化配置的最佳做法。

存储选项卡

“结果”部分显示有关存储的各种发现结果和建议。

“磁盘映射”和“卷映射”部分描述了逻辑卷与物理磁盘的相互关系。

物理磁盘透视图(“磁盘映射”)中的表格显示了磁盘上运行的所有逻辑卷。 在以下示例中,PhysicalDrive2 运行多个分区中创建的两个逻辑卷(J 和 H):

PerfInsights 报告的“查找”选项卡下的“磁盘映射”部分的屏幕截图。

卷透视图(“卷映射”)中的表格显示了每个逻辑卷下的所有物理磁盘。 请注意,对于 RAID/动态磁盘,可以在多个物理磁盘上运行一个逻辑卷。 在以下示例中, C:\mount 是在物理磁盘 2 和 3 上配置为 SpannedDisk 的装入点:

PerfInsights 报表的“查找”选项卡下的“卷映射”部分的屏幕截图。

SQL 选项卡

如果目标 VM 托管任何 SQL Server 实例,你将在报表 中看到另一个名为 SQL 的选项卡:

SQL 选项卡及其下的子选项卡的屏幕截图。

本部分包含“ 查找 ”选项卡,以及 VM 上托管的每个 SQL Server 实例的额外选项卡。

“结果”选项卡包含找到的所有 SQL 相关性能问题列表和建议。

以下示例中显示了 PhysicalDrive0(运行 C 驱动器)。 之所以显示此项,是因为 modeldevmodellog 文件位于 C 驱动器上,并且属于不同的类型(例如,一个为数据文件,一个为事务日志)。

modeldev 和 modellog 文件信息的屏幕截图。

SQL Server 的特定实例的选项卡包含一个常规部分,其中显示了所选实例的基本信息。 选项卡还包含更多高级信息部分,包括设置、配置和用户选项。

诊断选项卡

诊断 ”选项卡包含性能诊断运行期间计算机上的 CPU、磁盘和内存使用者的相关信息。 还可以在其中找到有关系统可能缺少的关键修补程序、任务列表和重要系统事件的信息。

所用外部工具参考

Diskspd

Diskspd 是 Microsoft 开发的一个存储负载生成器和性能测试工具。 有关详细信息,请参阅 Diskspd

Xperf

Xperf 是一个命令行工具,用于通过 Windows 性能工具包捕获跟踪。 有关详细信息,请参阅 Windows Performance Toolkit – Xperf(Windows 性能工具包 – Xperf)。

后续步骤

可将诊断日志和报告上传到 Microsoft 支持部门供进一步审查。 支持人员可能要求传输 PerfInsights 生成的输出,以帮助进行故障排除。

以下屏幕截图显示了你可能会收到的消息示例:

来自Microsoft 支持部门的示例消息的屏幕截图。

请遵照消息中的说明访问文件传输工作区。 为了获得额外的安全性,必须在首次使用时更改密码。

登录后,你将找到一个对话框,用于上传 PerfInsights 收集的 PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.zip文件。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区