如何在 Azure 中使用 PerfInsights

PerfInsights 是一种自助诊断工具,用于收集和分析诊断数据,并提供报告来帮助排查 Azure 中的 Windows 虚拟机性能问题。 PerfInsights 可以作为独立工具在虚拟机上运行,直接从门户使用 Azure 虚拟机的性能诊断或安装 Azure 性能诊断 VM 扩展

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

支持的故障排除方案

PerfInsights 可以收集和分析多种信息。 以下部分介绍常见方案。

注意

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

快速性能分析

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

  • 事件日志

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

  • 网络和防火墙配置设置

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

  • Microsoft SQL Server 数据库配置设置 (是否将 VM 标识为运行SQL Server)

  • 存储可靠性计数器

  • 重要的 Windows 修补程序

  • 已安装筛选器驱动程序

这是一个被动的信息集合,不应影响系统。

注意

此方案会自动包含在以下每种方案中:

标杆

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

注意

此方案可能会影响系统,不应在实时生产系统上运行。 如有必要,请在专用维护时段中运行此方案,以避免出现任何问题。 跟踪或基准测试导致的工作负荷增加可能会对 VM 的性能产生不利影响。

性能分析

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

Azure 文件存储分析

此方案与网络跟踪一起运行特殊的性能计数器捕获。 捕获包括所有服务器消息块 (SMB) 客户端共享计数器。 下面是捕获过程中的一些关键 SMB 客户端共享性能计数器:

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

高级性能分析

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

注意

此方案可能会影响系统,不应在实时生产系统上运行。 如有必要,请在专用维护时段中运行此方案,以避免出现任何问题。 跟踪或基准测试导致的工作负荷增加可能会对 VM 的性能产生不利影响。

PerfInsights 收集了哪些类型的信息?

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

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

性能诊断跟踪 (*)

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

每个规则由以下项组成:

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

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

  • 资源使用率高:
    • CPU 使用率高:检测 CPU 使用率过高的时间段,并显示这些时段内 CPU 使用率最高的使用者。
    • 高内存使用率:检测高内存使用周期,并显示这些时间段内内存使用率最高的使用者。
    • 磁盘使用率高:检测物理磁盘上的高磁盘使用周期,并显示这些时段内磁盘使用率最高的使用者。
    • 高分辨率磁盘使用情况:显示每个物理磁盘每 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、\网络适配器、\WFPv4\Packets、\WFPv6\Packets、\UDPv4\Datagrams、\UDPv6\Datagrams、\TCPv4\Connection、\TCPv6\Connection、\Network QoS Policy\Packets、\Per Processor 网络接口卡活动和 \Microsoft Winsock BSP

对于SQL Server实例

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

对于Azure 文件存储

\SMB 客户端共享

Diskpd 基准跟踪 (***)

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

在 VM 上运行 PerfInsights 工具

在运行该工具之前,我必须了解哪些内容?

工具要求

  • 必须在存在性能问题的 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]
    

    可以使用以下示例运行性能分析方案 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>
    

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

    PerfInsights /list
    

    注意

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

    如果你拥有 Microsoft 的有效支持票证,并且根据你正在工作的支持工程师的请求运行 PerfInsights,请确保使用 /sr 选项提供支持票证编号。

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

    如果未指定持续时间开关 /d ,则 PerfInsights 会在运行 vmslow、azurefiles 和高级方案时提示你重现问题。

跟踪或操作完成后,新文件将显示在与 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 相关的性能问题以及建议的列表。

在以下示例中,显示运行 C 驱动器) 的 PhysicalDrive0 (。 这是因为 modeldevmodellog 文件都位于 C 驱动器上,并且它们分别属于不同类型的 (,例如数据文件和事务日志,) 。

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

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

“诊断”选项卡

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

对使用的外部工具的引用

Diskspd

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

Xperf

Xperf 是一个命令行工具,用于从 Windows Performance Toolkit 捕获跟踪。 有关详细信息,请参阅 Windows Performance Toolkit – Xperf

后续步骤

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

以下屏幕截图显示了一条类似于你可能收到的消息:

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

按照消息中的说明访问文件传输工作区。 为了提高安全性,首次使用时必须更改密码。

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

联系我们寻求帮助

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