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

对 Azure 应用服务应用程序进行负载测试

本文介绍如何使用 Azure 负载测试来测试 Azure 应用服务上托管的应用程序。 Azure 应用服务是一项完全托管的服务,可用于在云中生成、部署和缩放 Web 应用程序和 API。

使用 Azure 负载测试,可以模拟到应用程序和服务的实际大规模流量。 即使 Azure 应用服务可以自动缩放,但使用 Azure 负载测试运行负载测试时,将会体验可靠性、性能和成本优化,并将:

  • 确保所有应用程序组件(而不仅仅是 Web 应用程序)都可以处理预期的负载。

  • 验证应用程序是否符合性能和稳定性要求。

  • 使用应用程序资源指标和诊断来识别整个应用程序的性能瓶颈。

  • 避免过度分配计算资源,并减少成本效率低下。

  • 通过在 CI/CD 管道中集成负载测试并指定测试失败条件,提前检测性能回归。

使用负载测试进行流量模拟

可以创建负载测试来模拟 Azure 应用服务上的应用程序流量。 Azure 负载测试提供了两个选项来创建负载测试:

  • 创建基于 URL 的快速测试
  • 使用 Apache JMeter 脚本(JMX 文件)

创建并运行负载测试后,可以为 Web 应用程序和所有依赖 Azure 组件监视资源指标,以确定性能和可伸缩性问题。

创建基于 URL 的负载测试

可以在 Azure 门户直接中从 Azure 应用服务 Web 应用创建基于 URL 的负载测试。 创建负载测试时,可以选择特定的部署槽位,并使用预填充的终结点 URL。

以下屏幕截图显示了如何在 Azure 门户中创建基于 URL 的负载测试。

首先为 Azure 应用服务创建基于 URL 的负载测试

通过上传 JMeter 脚本创建负载测试

Azure 负载测试提供 JMeter 的高保真支持。 可以通过上传 Apache JMeter 测试脚本来创建新的负载测试。 在以下场景中可以使用此方法:

  • 在单个测试中测试多个页面或终结点
  • 测试经过身份验证的终结点
  • 将参数传递给负载测试,例如环境变量或机密
  • 测试非基于 HTTP 的终结点,例如数据库连接
  • 配置更高级的加载分页
  • 重复使用现有的 JMeter 脚本

首先通过上传 JMeter 脚本创建负载测试

如果之前创建了基于 URL 的测试,Azure 负载测试将生成 JMeter 测试脚本。 可以下载此生成的测试脚本,进行修改或扩展,然后重新加载脚本。

## 监视应用的瓶颈和预配问题

在负载测试期间,Azure 负载测试收集有关测试执行的指标

  • 客户端指标:测试引擎指标,例如端到端响应时间、每秒请求数或错误百分比。 这些指标总体指示应用程序是否可以支持模拟用户负载。

  • 服务器端指标:Azure 应用程序组件的资源指标,例如应用服务计划的 CPU 百分比、HTTP 响应代码或数据库资源使用情况。

使用 Azure 负载测试仪表板分析测试运行指标并确定应用程序中的性能瓶颈,或者确定是否过度预配了一些计算资源。 例如,可以评估服务计划实例是否适合工作负载。

屏幕截图显示 Azure 门户中的负载测试结果仪表板。

详细了解如何在 Azure 负载测试中监视服务器端指标

对于托管在 Azure 应用服务上的应用程序,可以使用应用服务诊断来深入了解应用程序的性能和运行状况。 将应用服务应用程序组件添加到负载测试配置时,负载测试仪表板提供指向应用服务资源的应用服务诊断仪表板的直接链接。

显示 Azure 门户中负载测试仪表板上的“应用服务”部分的屏幕截图。

自定义负载测试的失败条件

通过测试失败条件,可以配置负载测试客户端指标的条件。 如果负载测试运行不符合这些条件,则测试被视为失败。 开始为负载测试配置失败条件

例如,可以指定请求的平均响应时间,或失败请求百分比高于给定阈值。 可以随时将失败条件添加到负载测试,无论它是快速测试还是上传 JMeter 脚本。

在 CI/CD 管道中运行负载测试时,可以使用测试失败条件来识别应用程序生成的性能回归。

屏幕截图显示在 Azure 门户中负载测试的测试条件页。

使用参数跨部署槽位进行测试

配置负载测试时,可以指定参数以将环境变量或机密传递给负载测试脚本。 这些参数使测试脚本可重用和可重新配置。 了解如何使用参数将环境变量传递给负载测试

一个示例是将参数用作环境变量,从而避免在测试脚本中存储应用程序终结点 URL。 还可以使用环境变量将其他配置设置传递给 JMeter 测试脚本。 例如,可以将虚拟用户数或 CSV 输入文件的文件名传递给测试脚本。

另一个用于参数的用途是在多个Azure 应用服务部署槽位之间重复使用测试脚本。 部署槽是具有自身主机名和单独的 URL 的实时应用。 为应用程序终结点使用参数,然后可以为应用程序设置过渡环境。

显示 Azure 门户中快速测试的“参数”页的屏幕截图,其中突出显示目标 URL 的参数。

后续步骤

了解如何: