你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是 Azure 负载测试?

Azure 负载测试是一项完全托管的负载测试服务,可用于生成大规模负载。 该服务可以模拟应用程序的流量,且无需其托管位置。 开发人员、测试人员和质量保证 (QA) 工程师可以使用该服务来优化应用程序性能、可缩放性或容量。

使用 URL 快速为 Web 应用程序创建负载测试,而无需事先了解测试工具。 Azure 负载测试抽取了大规模运行负载测试的复杂性和基础设施。

对于更高级的负载测试方案,也可以通过上传测试脚本来创建负载测试。 Azure 负载测试支持运行基于 Apache JMeter 的测试基于 Locust 的测试。 例如,测试计划可能包含多个应用程序请求、你要调用非 HTTP 终结点,或者你要使用输入数据和参数使测试更加动态。

如果你的应用程序托管在 Azure 上,Azure 负载测试会收集详细的资源指标,来帮助你跨 Azure 应用程序组件识别性能瓶颈

若要及早捕获应用程序性能回归,请在持续集成和持续部署 (CI/CD) 工作流中添加负载测试。 利用测试失败条件来定义和验证应用程序质量要求。

使用 Azure 负载测试可以测试本地托管的专用应用程序终结点或应用程序。 有关详细信息,请参阅在虚拟网络中部署 Azure 负载测试的方案

下图显示了 Azure 负载测试的体系结构概述。

显示 Azure 负载测试体系结构的图表。

注意

此概览图显示 Azure 负载测试如何使用 Azure Monitor 捕获应用组件的指标。 详细了解 支持的 Azure 资源类型

详细了解 Azure 负载测试的关键概念

使用方案

Azure 负载测试可以使用 Apache JMeter 或 Locust 测试框架,并支持大量应用程序类型和通信协议。 以下列表提供了受支持的应用程序或终结点类型的示例:

  • 使用 HTTP 或 HTTPS 的 Web 应用程序
  • REST API
  • 使用 JDBC 的数据库
  • 基于 TCP 的终结点

对于 JMeter,可以在测试脚本中使用 JMeter 插件,可以对更多应用程序类型进行负载测试。

借助快速测试体验,可以测试单个基于 URL 的 HTTP 终结点。 通过上传 JMeter 脚本,可以使用所有 JMeter 支持的通信协议。

Azure 负载测试目前不支持 Apache JMeter 和 Locust 以外的其他测试框架。

使用大规模负载测试来确定性能瓶颈

通常在应用程序处于负载状态时才会发现性能问题。 可以在 Azure 门户中启动大规模负载测试,以更快地了解应用程序承压时的性能。 测试运行时,Azure 负载测试仪表板会实时更新客户端和服务器端指标。

负载测试完成后,可以使用仪表板分析测试结果和确定性能瓶颈。 对于 Azure 托管的应用程序,仪表板显示 Azure 应用程序组件的详细资源指标。 开始学习教程来识别 Azure 托管应用程序的性能瓶颈

Azure 负载测试会保存测试运行的历史记录,让你能够直观地比较多个运行,来检测一段时间内的性能回归。

你还可以下载测试结果,在第三方工具中进行分析。

启用自动负载测试

你可以在开发生命周期内的重要时刻将 Azure 负载测试集成到 CI/CD 管道中。 例如,你可以在每个 sprint 结束时或在过渡环境中自动运行负载测试,以验证候选发布版本。

开始将负载测试添加到 CI/CD 工作流,以快速识别应用程序在负载下的性能下降。

在测试配置中,请指定测试失败条件,以在开发周期早期捕获应用程序性能或稳定性回归。 例如,在平均响应时间或错误数超过特定阈值时收到警报。

Azure 负载测试将自动停止自动负载测试,以响应特定错误条件。 或者,你还可以在 Apache JMeter 脚本中使用 AutoStop 侦听器。 自动停止可避免因测试失败(例如因终结点 URL 配置错误)而产生更多成本。 了解如何为负载测试配置自动停止

你可以从 Azure Pipelines 或 GitHub Actions 工作流触发 Azure 负载测试,或者使用 Azure CLI 与其他 CI 工具相集成。

Azure 负载测试原理

Azure 负载测试使用 Apache JMeter 或 Locust 来运行负载测试。 可以使用来自 https://jmeter-plugins.org 的 Apache JMeter 插件,也可以上传自己的插件代码。 Azure 负载测试支持 JMeter 支持的所有通信协议。 例如,使用 Azure 负载测试对数据库连接或消息队列进行负载测试。 详细了解支持的 Apache JMeter 功能

Azure 负载测试测试引擎可以抽象出运行大规模负载测试所需的基础结构。 每个测试引擎实例运行测试脚本来模拟大量虚拟用户同时访问应用程序终结点的情况。 基于 URL 创建负载测试(快速测试)时,Azure 负载测试会自动生成测试脚本。 若要横向扩展负载测试,可以配置测试引擎的数量。

可在任何位置(Azure、本地或其他云中)托管负载下的应用程序。 若要为没有公共终结点的服务运行加载测试,请在虚拟网络中部署 Azure 负载测试

负载测试期间,Azure 负载测试会收集以下资源指标并将其显示在仪表板中:

  • 客户端指标会显示测试引擎报告的详细信息。 这些详细信息包括虚拟用户数、请求响应时间或每秒请求数。

  • 服务器端指标显示有关 Azure 应用程序组件的信息。 Azure 负载测试与 Azure Monitor(含 Application Insights 和容器见解)集成,以从 Azure 服务捕获详细信息。 根据服务的类型,可以使用不同的指标。 例如,可以使用数据库读取次数、HTTP 响应类型或容器资源消耗指标。

Azure 负载测试自动整合 Azure 网络的最佳做法,以帮助确保测试运行安全可靠。 如果应用程序终结点或 Azure 组件开始限制请求,负载测试会自动停止。

该服务会使用 Microsoft 管理的密钥(服务管理的密钥)自动加密负载测试资源中存储的所有数据。 例如,此数据包括 Apache JMeter 或 Locust 测试脚本、配置文件等。 或者,还可将服务配置为使用客户管理的密钥

区域内数据驻留

Azure 负载测试不会在部署服务实例的区域之外存储或处理客户数据。

开始使用 Azure 负载测试: