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

新 Azure 负载测试用户应了解的关键概念

了解 Azure 负载测试的关键概念和组件。 本文信息有助于更有效地设置负载测试,以发现应用程序中的性能问题。

负载测试的一般概念

了解与运行负载测试相关的关键概念。

虚拟用户

虚拟用户针对服务器应用程序运行特定的测试用例,并且独立于其他虚拟用户运行。 你可以使用多个虚拟用户来模拟与服务器应用程序的并发连接。

Apache JMeter 还将虚拟用户称为线程。 在 JMeter 测试脚本中,线程组元素可用于指定虚拟用户池。 在 Apache JMeter 文档中详细了解线程组

负载测试的虚拟用户总数取决于测试脚本中的虚拟用户数和测试引擎实例数。

公式为:虚拟用户总数 =(JMX 文件中的虚拟用户数)*(测试引擎实例数)。

可以通过配置测试引擎实例数、测试脚本中的虚拟用户数或两者的组合来达到虚拟用户的目标数量。

爬坡时间

爬坡时间是指达到负载测试的全部虚拟用户数所需的时间。 如果虚拟用户数为 20,而爬坡时间为 120 秒,则需要 120 秒才能达到所有 20 个虚拟用户。 每个虚拟用户将在上一个用户启动后的 6 (120/20) 秒启动。

响应时间

单个请求的响应时间,或 JMeter 中的运行时间是指从发送请求之前到收到最后一个响应之后的总时间。 响应时间不包括呈现响应的时间。 在负载测试期间,不会处理任何客户端代码(如 JavaScript)。

延迟

单个请求的延迟是指从发送请求之前到接收到第一个响应之后的总时间。 延迟包括整理请求和整理响应的第一部分所需的所有处理。

每秒请求数 (RPS)

每秒请求数 (RPS) 或吞吐量是负载测试每秒生成的对服务器应用程序的请求总数。

公式为:RPS =(请求数)/(总时间)秒。

时间是按照从第一个样本开始到最后一个样本结束计算的。 此时间包括样本之间的任何间隔,例如,如果测试脚本包含计时器

计算 RPS 的另一种方法是基于应用程序的平均延迟虚拟用户数。 若要通过负载测试模拟特定数量的 RPS,给定应用程序的延迟后,可以计算所需的虚拟用户数。

公式为:虚拟用户数 = (RPS) * 延迟(秒)。

例如,假设应用程序延迟为 20 毫秒(0.02 秒),若要模拟 100,000 RPS,应将负载测试配置为 2,000 个虚拟用户 (100,000 * 0.02)。

Azure 负载测试组件

了解 Azure 负载测试的关键概念和组件。 下图概述了不同概念彼此之间的关系。

显示 Azure 负载测试不同概念彼此之间的关系的示意图。

负载测试资源

Azure 负载测试资源是用于负载测试活动的顶级资源。 使用此资源可以在一个集中位置查看和管理测试、测试结果和相关项目。

创建负载测试资源时,请指定其位置,该位置确定测试引擎的位置。 Azure 负载测试会自动加密资源中的所有项目。 可以选择使用 Microsoft 管理的密钥或使用自己的客户管理的密钥进行加密。

若要为应用程序运行负载测试,请将测试添加到负载测试资源。 资源可以包含零个或多个测试。

可以使用 Azure 基于角色的访问控制授予对负载测试资源和相关项目的访问权限。

Azure 负载测试允许使用托管标识来访问用于存储负载测试机密参数或证书的 Azure 密钥保管库。 可以使用用户分配的标识或系统分配的托管标识。

测试

测试描述了应用程序的负载测试配置。 将测试添加到现有的 Azure 负载测试资源。

测试包含一个测试计划,描述了调用应用程序终结点的步骤。 可以通过以下三种方式之一定义测试计划:

Azure 负载测试支持 JMeter 支持的所有通信协议,而不仅仅是基于 HTTP 的终结点。 例如,你可能希望在测试脚本中读取或写入数据库或消息队列。

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

该测试还指定用于运行负载测试的配置设置:

此外,还可以将 CSV 输入数据文件和测试配置文件上传到负载测试。

启动测试时,Azure 负载测试会将测试脚本、相关文件和配置部署到测试引擎实例。 然后,测试引擎实例启动测试脚本来模拟应用程序负载。

每次启动测试时,Azure 负载测试都会创建一个测试运行并将其附加到测试。

测试运行

测试运行表示负载测试的一次执行。 运行测试时,测试运行包含关联测试中的配置设置的副本。

测试运行完成后,可以在 Azure 门户的 Azure 负载测试仪表板中查看和分析负载测试结果

或者,可以下载测试日志导出测试结果文件

重要

更新测试时,现有测试运行不会自动从测试继承新的设置。 只有在运行测试时,新的测试运行才会使用这些新设置。 如果重新运行现有测试运行,则会使用测试运行的原始设置

测试引擎

测试引擎是运行测试脚本的计算基础结构,由 Microsoft 管理。 测试引擎实例以并行方式运行测试脚本。 可以通过配置测试引擎实例的数量来横向扩展负载测试。 了解如何配置虚拟用户数,或模拟每秒的目标请求数。

测试引擎托管在与 Azure 负载测试资源相同的位置。 可以在创建 Azure 负载测试资源时配置 Azure 区域。

测试脚本运行时,Azure 负载测试会从所有测试引擎实例中收集和聚合测试框架日志。 可以下载日志以在负载测试期间分析错误

应用组件

为 Azure 托管应用程序运行负载测试时,可以监视不同 Azure 应用程序组件的资源指标(服务器端指标)。 负载测试运行时以及测试完成后,可以在 Azure 负载测试仪表板中监视和分析资源指标

创建或更新负载测试时,可以配置 Azure 负载测试将监视的应用组件列表。 可以修改每个应用组件的默认资源指标列表。

详细了解 Azure 负载测试支持哪些 Azure 资源类型

指标

在负载测试期间,Azure 负载测试收集有关测试执行的指标。 有两种类型的指标:

  • 客户端指标由测试引擎报告。 这些指标包括虚拟用户数、请求响应时间、失败的请求数或每秒请求数。 可以基于这些客户端指标定义测试失败条件

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

现在,你已了解 Azure 负载测试的关键概念,可以开始创建负载测试了。