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

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

本文介绍如何使用 Azure 负载测试为大规模配置负载测试。 Azure 负载测试抽象化了预配基础结构以模拟大规模流量的复杂性。 若要横向扩展负载测试,可以配置并行测试引擎实例数。 若要实现最佳负载分布,可以在 Azure 负载测试仪表板中监视测试实例运行状况指标。

先决条件

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

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

为负载测试配置负载参数

若要模拟应用程序的用户流量,可以配置负载模式和要模拟其负载的虚拟用户数。 通过跨多个并行测试引擎实例运行负载测试,Azure 负载测试可以横向扩展模拟发向应用程序的流量的虚拟用户数。 负载模式确定负载在负载测试期间如何分布负载。 负载模式的示例包括线性、阶梯或峰值负载。

根据负载测试的类型、基于 URL 或基于 JMeter 的类型,可以选择不同的选项来配置目标负载和负载模式。 下表列出了这两种测试类型之间的差异。

测试类型 虚拟用户数 负载模式
基于 URL (基本) 在负载测试配置中指定虚拟用户的目标数量。 基于虚拟用户的增加时间和数量的线性负载模式。
基于 URL (高级) 在负载测试配置中指定测试引擎数和每个实例的虚拟用户数。 配置负载模式(线性、步骤、峰值)。
基于 JMeter 在负载测试配置中指定测试引擎数。 指定测试脚本中的虚拟用户数。 在测试脚本中配置负载模式。

为基于 URL 的测试配置加载参数

若要为基于 URL 的负载测试指定负载参数,

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 在左侧导航中,选择“测试”以查看所有测试。

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

    Screenshot that shows the list of load tests and the 'Edit' button.

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

  4. “基本信息 ”页上,确保选择“ 启用高级设置”。

  5. “编辑测试 ”页上,选择“ 加载 ”选项卡。

    对于基于 URL 的测试,可以配置并行测试引擎实例数和负载模式。

  6. 使用引擎实例滑块控件更新并行测试引擎实例数。 或者,在输入框中输入目标值。

    Screenshot of the 'Load' tab on the 'Edit test' pane.

  7. 从列表中选择“加载模式”值。

    对于每个模式,请填写相应的配置设置。 该图表提供负载模式及其配置参数的可视表示形式。

    Screenshot of the 'Load' tab when editing a load test, showing how to configure the load pattern.

为基于 JMeter 的测试配置加载参数

若要为基于 JMeter 的负载测试指定负载参数,

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 在左侧导航中,选择“测试”以查看所有测试。

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

    Screenshot that shows the list of load tests and the 'Edit' button.

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

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

    Screenshot of the 'Load' tab on the 'Edit test' pane.

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

监视引擎实例指标

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

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

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

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

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

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

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

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

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

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

Screenshot that shows the load engine health metrics on the test run dashboard.

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

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

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

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

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

确定每秒请求数

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 区域中。