排查 Linux 或 Windows 上的 Azure 虚拟机性能问题
本文介绍虚拟机 (VM) 通过监视和观察瓶颈进行常规性能故障排除,并为可能发生的问题提供可能的修正。 除了监视,还可以使用 Perfinsights,它可以提供报告,其中包含有关 IO/CPU/内存的最佳做法建议和关键瓶颈。 Perfinsights 适用于 Azure 中的 Windows 和 Linux VM。
本文介绍如何使用监视来诊断性能瓶颈。
启用监视
Azure IAAS 虚拟机监视
若要监视来宾 VM,请使用 Azure VM 监视,它会对某些高级资源状况发出警报。 若要检查是否启用了 VM 诊断,请参阅 Azure 资源日志概述。 如果看到以下内容,则很可能未启用诊断:
通过 microsoft Azure 门户 启用 VM 诊断
启用 VM 诊断:
转到 VM。
单击“ 诊断设置”。
选择存储帐户,然后单击 “启用来宾级监视”。
可以从“诊断设置”下的“代理”选项卡检查用于诊断设置的存储帐户。
通过 Azure 门户 启用存储帐户诊断
当我们打算分析 Azure 中虚拟机的 IO 性能时,存储是一个非常重要的层。 对于与存储相关的指标,我们需要启用诊断作为附加步骤。 如果只想分析与存储相关的计数器,也可以启用此功能。
通过选择 VM 确定 VM) 使用的存储帐户 (或帐户。 单击 “设置”,然后单击“ 磁盘”:
在门户中,转到 VM 的存储帐户 (或帐户) ,并完成以下步骤:
- 单击上一步找到的存储帐户的概述。
- 将显示默认指标。
单击任何指标,其中会显示另一个边栏选项卡,其中包含更多用于配置和添加指标的选项。
若要配置这些选项,请执行以下操作:
- 选择“ 指标”。
- 选择 “资源 (存储帐户) 。
- 选择 命名空间
- 选择“ 指标”。
- 选择聚合的类型
- 可以将此视图固定在仪表板上。
观察瓶颈
完成所需指标的初始设置过程,并在为 VM 和相关存储帐户启用诊断后,我们可以转移到分析阶段。
访问监视
选择要调查的 Azure VM,然后选择“ 监视”。
观察时间线
若要确定是否存在任何资源瓶颈,请查看数据。 如果发现计算机一直运行正常,但已报告最近性能下降,请查看包含性能指标数据的数据的时间范围,在报告更改之前、问题期间和之后。
检查 CPU 瓶颈
- 编辑图形。
- 设置时间范围。
- 然后,需要添加计数器:CPU 百分比来宾 OS
- 保存。
CPU 观察趋势
查看性能问题时,请注意趋势并了解它们是否会影响你。 在下一部分中,我们将使用门户中的监视图来显示趋势。 它们还可用于交叉引用同一时间段内的差异资源行为。 若要自定义图形,请单击“ Azure Monitor 数据平台”。
Spiking – Spiking 可能与计划任务/已知事件相关。 如果可以识别任务,请确定任务是否在所需的性能级别运行。 如果性能可以接受,则可能不需要增加资源。
峰值上升和常量 - 通常指示新的工作负载。 如果它不是已识别的工作负载,请在 VM 中启用监视,找出哪些进程 (或哪些进程) 导致该行为。 识别进程后,确定消耗增加是由低效代码引起的,还是正常消耗造成的。 如果正常使用,请确定进程是否在所需的性能级别运行。
常量 - 确定 VM 是始终在此级别运行,还是自启用诊断以来仅在该级别运行。 如果是这样,请确定导致问题的进程 (或) 进程,并考虑添加更多资源。
稳步增加 – 消耗的不断增加通常是低效的代码或进程占用更多用户工作负荷。
高 CPU 利用率修正
如果应用程序或进程未在正确的性能级别运行,并且你看到 95% + CPU 使用率常量,则可以执行以下任一任务:
- 为了立即缓解 - 将 VM 的大小增加到具有更多核心的大小
- 了解问题 - 找到应用程序/进程并相应地进行故障排除。
如果增加了 VM,并且 CPU 仍运行 95%,请确定此设置是提供更好的性能,还是将应用程序吞吐量提高到可接受的级别。 如果没有,请对单个应用程序\进程进行故障排除。
可以使用适用于 Windows 或 Linux 的 Perfinsights 来分析哪个进程正在推动 CPU 消耗。
检查内存瓶颈
查看指标:
- 添加分区。
- 添加磁贴。
- 打开库。
- 选择“内存使用情况”并拖动。 停靠磁贴后,右键单击并选择“ 6x4”。
内存观察趋势
内存使用情况显示 VM 占用的内存量。 了解趋势以及它是否映射到出现问题的时间。 应始终具有超过 100 MB 的可用内存。
峰值和常量/常量稳定消耗 - 内存利用率过高可能不是性能不佳的原因,因为某些应用程序(如关系数据库引擎)分配了大量内存,并且这种利用率可能并不显著。 但是,如果有多个内存不足的应用程序,则可能会看到内存争用导致修整和分页/交换到磁盘的性能不佳。 这种性能不佳通常是造成应用程序性能影响的一个明显原因。
稳步增加消耗 - 应用程序可能“预热”,这种消耗在启动的数据库引擎中很常见。 但是,它也可能是应用程序中内存泄漏的迹象。 确定应用程序并了解行为是否预期。
页面或交换文件使用情况 - 检查是使用位于 D:) 上的 Windows 分页文件 (,还是位于 /dev/sdb
) 频繁使用的 Linux 交换文件 (。 如果除了这些文件之外,这些卷上没有任何内容,检查这些磁盘上的高读/写数。 此问题表明内存不足的情况。
高内存利用率修正
若要解决内存使用率过高的问题,请执行以下任一任务:
- 为了立即缓解或页面或交换文件使用情况 - 将 VM 大小增加到具有更多内存的 VM 大小,然后监视。
- 了解问题 - 查找应用程序/进程并进行故障排除,以识别高消耗内存应用程序。
- 如果知道应用程序,请查看是否可以限制内存分配。
如果在升级到更大的 VM 后,发现仍持续稳定增长,直到 100%,确定应用程序/进程并对其进行故障排除。
可以使用适用于 Windows 或 Linux 的 Perfinsights 来分析哪个进程正在推动内存消耗。
检查磁盘瓶颈
若要检查 VM 的存储子系统,请使用 VM 诊断和存储帐户诊断中的计数器在 Azure VM 级别检查诊断。
对于特定于 VM 的故障排除,可以使用适用于 Windows 或 Linux 的 Perfinsights,这有助于分析哪个进程正在推动 IO。
请注意,我们没有区域冗余和高级存储帐户的计数器。 对于与这些计数器相关的问题,请提出支持案例。
查看监视中的存储帐户诊断
若要处理以下项,请在门户中转到 VM 的存储帐户:
- 编辑监视图。
- 设置时间范围。
- 添加以下步骤中所述的计数器。
- 保存更改。
磁盘仅) (标准存储观察趋势
若要确定存储问题,请查看存储帐户诊断和 VM 诊断中的性能指标。
对于以下每个检查,在问题的时间范围内出现问题时,查找关键趋势。
检查 Azure 存储可用性 - 添加存储帐户指标:可用性
如果看到可用性下降,则平台可能存在问题,检查 Azure 状态。 如果其中未显示任何问题,请提出新的支持请求。
检查 Azure 存储超时 - 添加存储帐户指标
- ClientTimeOutError
- ServerTimeOutError
- AverageE2ELatency
- AverageServerLatency
- TotalRequests
*TimeOutError 指标中的值表示 IO 操作花费的时间太长且超时。完成后续步骤将有助于确定潜在原因。
TimeOutErerErrors 同时增加 AverageServerLatency 可能是平台问题。 在这种情况下,提出新的支持请求。
AverageE2ELatency 表示客户端延迟。 验证应用程序如何执行 IOPS。 查找增加或持续高 TotalRequests 指标。 此指标表示 IOPS。 如果开始达到存储帐户或单个 VHD 的限制,则延迟可能与限制有关。
检查 Azure 存储限制 - 添加存储帐户指标:ThrottlingError
限制值指示你在存储帐户级别受到限制,这意味着达到帐户的 IOPS 限制。 可以通过检查指标 TotalRequests 来确定是否达到 IOPS 阈值。
请注意,每个 VHD 的限制为 500 IOPS 或 60 MBit,但受每个存储帐户 20000 IOPS 的累积限制的约束。
使用此指标时,无法判断是哪个 Blob 导致了限制,哪些 Blob 受其影响。 但是,你已达到存储帐户的 IOPS 或入口/出口限制。
若要确定是否达到 IOPS 限制,请转到存储帐户诊断并检查 TotalRequests,查看是否接近 20,000 个 TotalRequest。 确定模式中的更改,无论是第一次看到限制,还是在特定时间发生此限制。
对于标准存储下的新磁盘产品/服务,IOPS 和吞吐量限制可能会有所不同,但标准存储帐户的累积限制为 20000 IOPS, (高级存储在帐户或磁盘级别) 有不同的限制。 详细了解不同的标准存储磁盘产品/服务和每个磁盘的限制:
References
存储帐户的带宽由存储帐户指标度量:TotalIngress 和 TotalEgress。 带宽阈值不同,具体取决于冗余类型和区域。
根据存储帐户冗余类型和区域的入口和出口限制检查 TotalIngress 和 TotalEgress。
检查附加到 VM 的 VHD 的吞吐量限制。 添加 VM 指标磁盘读取和写入。
标准存储下的新磁盘产品/服务具有不同的 IOPS 和吞吐量限制, (不按 VHD) 公开 IOPS。 查看数据,了解是否达到了 VM 级别使用磁盘读取和写入的 VHD () 的组合吞吐量 MB 限制,然后优化 VM 存储配置以超过单个 VHD 限制。 详细了解不同的标准存储磁盘产品/服务和每个磁盘的限制:
高磁盘利用率/延迟修正
降低客户端延迟并优化 VM IO 以超过 VHD 限制
减少限制
如果达到存储帐户的上限,请在存储帐户之间重新平衡 VHD。 请参阅 Azure 存储可伸缩性和性能目标。
提高吞吐量并减少延迟
如果具有延迟敏感型应用程序并且需要高吞吐量,请使用 DS 和 GS 系列 VM 将 VHD 迁移到 Azure 高级存储。
以下文章讨论特定方案:
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈