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

为大规模负载配置 Azure 负载测试

本文介绍如何使用 Azure 负载测试为大规模负载设置负载测试。

配置多个测试引擎实例以横向扩展负载测试的虚拟用户数,并模拟每秒大量请求。 若要实现最佳负载分布,可以在 Azure 负载测试仪表板中监视测试实例运行状况指标。

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户

  • 现有的 Azure 负载测试资源。 若要创建 Azure 负载测试资源,请参阅创建并运行负载测试快速入门。

确定每秒请求数

Azure 负载测试可以为负载测试生成的每秒请求数 (RPS) 最大值取决于应用程序的延迟和虚拟用户 (VU) 的数量。 应用程序延迟是从测试引擎发送应用程序请求到收到响应的总时间。 虚拟用户计数是 Azure 负载测试在给定时间执行的并行请求数。

若要计算每秒的请求数,请应用以下公式:RPS = (VU 的数量) * (1/延迟(以秒为单位的))。

例如,如果应用程序延迟为 20 毫秒(0.02 秒),生成的负载为 2,000 个 VU,则可以实现大约 100,000 RPS(2000 * 1/0.02 秒)。

若要达到每秒的目标请求数,请配置负载测试的虚拟用户总数。

备注

Apache JMeter 只报告与服务器来回发送的请求(无论请求是否成功)。 如果 Apache JMeter 无法连接到应用程序,则实际的每秒请求数将低于最大值。 可能的原因是服务器过于繁忙,因而无法处理请求,或者缺少 TLS/SSL 证书。 若要诊断连接问题,可以检查负载测试仪表板中的“错误”图表并下载负载测试日志文件

测试引擎实例和虚拟用户

在 Apache JMeter 脚本中,可以指定并行线程数。 每个线程表示一个并行访问应用程序终结点的虚拟用户。 建议将脚本中的线程数保持在最大值 250 以下。

在 Azure 负载测试中,测试引擎实例负责运行 Apache JMeter 脚本。 可以配置负载测试的实例数。 所有测试引擎实例将并行运行。

负载测试的虚拟用户总数为:VU = (线程数) * (测试引擎实例数)。

若要模拟目标数量的虚拟用户,可以在 JMeter 脚本中配置并行线程,并相应地配置负载测试的引擎实例。 监视测试引擎指标以优化实例数量。

例如,若要模拟 1,000 个虚拟用户,请将 Apache JMeter 脚本中的线程数设置为 250。 然后,使用 4 个测试引擎实例配置负载测试(即 4 x 250 个线程)。

Azure 负载测试资源的位置确定测试引擎实例的位置。 负载测试资源中的所有测试引擎实例都托管在同一个 Azure 区域中。

配置测试计划

在本部分,你将配置负载测试的缩放设置。

  1. 使用 Azure 订阅的凭据登录到 Azure 门户

  2. 转到你的负载测试资源。 在左侧窗格中,选择“测试”以查看负载测试列表。

  3. 在列表中选择你的负载测试,然后选择“编辑”。

    显示负载测试列表和“编辑”按钮的屏幕截图。

  4. 还可以从测试详细信息页编辑测试配置。 为此,请依次选择“配置”、“测试”。

    显示测试详细信息页面上的“配置”和“测试”按钮的屏幕截图。

  5. 在“编辑测试”页面,选择“加载”选项卡。使用“引擎实例”滑块控件更新测试引擎实例的数量,或直接在输入框中输入值。

    “编辑测试”窗格上“加载”选项卡的屏幕截图。

  6. 选择“应用”以修改测试并在重新运行测试时使用新配置。

监视引擎实例指标

若要确保测试引擎实例本身不是性能瓶颈,可以监视测试引擎实例的资源指标。 测试实例的资源使用率较高可能会对负载测试结果产生负面影响。

Azure 负载测试报告每个实例的四个资源指标:

  • CPU 百分比。
  • 内存百分比。
  • 每秒网络字节数。
  • 虚拟用户数。

如果在测试运行期间的平均 CPU 百分比或内存百分比保持在 75% 以下,则认为测试引擎实例运行良好。

若要查看引擎资源指标,请执行以下操作:

  1. 转到你的负载测试资源。 在左侧窗格中,选择“测试”以查看负载测试列表。

  2. 在列表中,选择负载测试以查看测试运行列表。

  3. 在测试运行列表中,选择测试运行。

  4. 在测试运行仪表板中,选择“引擎运行状况”以查看引擎资源指标。

    或者,使用筛选器控件选择特定的测试引擎实例。

在测试运行仪表板上显示负载引擎运行状况指标的屏幕截图。

排查运行不正常的引擎实例

如果一个或多个实例显示资源使用率较高,则可能会影响测试结果。 若要解决此问题,请尝试下面的一个或多个步骤:

  • 减少每个测试引擎的线程(虚拟用户)数。 若要实现目标数量的虚拟用户,可以增加负载测试的引擎实例数。

  • 确保脚本有效,无需冗余代码。

  • 如果引擎运行状况未知,请重新运行测试。

后续步骤