你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
了解 Azure 负载测试的关键概念和组件。 此信息可帮助你更有效地设置负载测试,以识别应用程序中的性能问题。
负载测试的一般概念
了解与运行负载测试相关的关键概念。
虚拟用户
虚拟用户针对服务器应用程序运行特定的测试用例,独立于其他虚拟用户运行。 可以使用多个虚拟用户模拟与服务器应用程序的并发连接。
Apache JMeter 还将虚拟用户称为 线程。 在 JMeter 测试脚本中, 线程组 元素允许你指定虚拟用户的池。 了解 Apache JMeter 文档中的 线程组 。
Locust 将虚拟用户称为 用户。 可以在 Web 界面中将测试所需的用户指定为命令行参数、环境变量或配置文件。 有关详细信息,请参阅 Locust 文档中 的配置选项 。
负载测试的虚拟用户总数取决于测试脚本中的虚拟用户数和 测试引擎实例数。
对于基于 JMeter 的负载测试,公式为:虚拟用户总数 = (JMX 文件中的虚拟用户) * (测试引擎实例数)。
可以通过 配置测试引擎实例数、测试脚本中的虚拟用户数或两者的组合来实现虚拟用户的目标数量。
对于基于 Locust 的负载测试,虚拟用户的总数是通过任何配置选项指定的用户数。 然后,可以配置生成用户总数所需的 测试引擎实例数 。
增加时间
增加时间是获取负载测试的虚拟 用户 总数所需的时间。 如果虚拟用户数为 20,并且加速时间为 120 秒,则获取所有 20 个虚拟用户需要 120 秒。 启动前一个用户后,每个虚拟用户将启动 6(120/20) 秒。
对于 Locust,可以使用 生成速率配置增加。 生成速率是每秒添加的用户数。 例如,如果用户数为 20 且生成速率为 2,则每秒将添加 2 个用户,并且需要 10 秒才能到达所有 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 负载测试会自动加密资源中的所有项目。 可以在Microsoft管理的密钥之间进行选择,也可以使用自己的客户管理的密钥进行加密。
若要为应用程序运行负载测试,请将 测试 添加到负载测试资源。 资源可以包含零个或多个测试。
可以使用 Azure 基于角色的访问控制 授予对负载测试资源和相关项目的访问权限。
Azure 负载测试允许出于各种目的 使用托管标识 ,例如访问 Azure Key Vault 来存储 负载测试机密参数或证书、访问 Azure Monitor 指标以 配置故障条件或模拟 基于托管标识的身份验证流。
测试
测试描述了应用程序的负载测试配置。 将测试添加到现有的 Azure 负载测试资源。
测试包含一个测试计划,用于描述调用应用程序终结点的步骤。 可以通过以下三种方式之一定义测试计划:
Azure 负载测试支持 JMeter 和 Locust 支持的所有通信协议,而不仅仅是基于 HTTP 的终结点。 例如,你可能希望在测试脚本中读取或写入数据库或消息队列。
Azure 负载测试目前不支持 Apache JMeter 和 Locust 以外的其他测试框架。
该测试还指定用于运行负载测试的配置设置:
- 负载测试参数,例如环境变量、机密和证书。
- 负载配置,用于跨多个测试引擎实例横向扩展负载测试。
- 无法 确定测试何时应通过或失败。
- 监视设置,用于配置在测试运行期间 要监视的 Azure 应用组件和资源指标 的列表。
此外,还可以将 CSV 输入数据文件和测试配置文件上传到负载测试。
启动测试时,Azure 负载测试会将测试脚本、相关文件和配置部署到测试引擎实例。 然后,测试引擎实例启动测试脚本来模拟应用程序负载。
每次开始测试时,Azure 负载测试都会创建 测试运行 并将其附加到测试。
试运转
测试执行表示执行负载测试的一次操作。 运行测试时,测试执行会包含关联测试的配置设置副本。
测试运行完成后,可以在 Azure 门户中的 Azure 负载测试仪表板中查看和分析负载测试结果 。
重要
更新测试时,现有测试运行不会自动从测试继承新设置。 只有在运行 测试时,新测试才会使用新设置。 如果重新运行现有 测试运行,将使用测试运行的原始设置。
测试引擎
测试引擎是由运行测试脚本的Microsoft管理的计算基础结构。 测试引擎实例并行运行测试脚本。 可以通过配置测试引擎实例数 来横向扩展负载测试 。 了解如何配置 虚拟用户数,或模拟 每秒的目标请求数。
测试引擎托管在 Azure 负载测试资源所在的同一位置。 创建 Azure 负载测试资源时,可以配置 Azure 区域。
Azure 负载测试使用Standard_D4d_v4大小为四个 vCPU、16GB 内存和 Azure Linux作系统的虚拟机作为测试引擎。 对于基于 JMeter 的测试,测试引擎使用 JDK 21 和 Apache JMeter 版本 5.6.3。 对于基于 Locust 的测试,测试引擎使用 Python 3.9.19 和 Locust 版本 2.33.2。
测试脚本运行时,Azure 负载测试从所有测试引擎实例收集并聚合测试框架日志。 可以 下载日志,以便在负载测试期间分析错误。
应用组件
为 Azure 托管的应用程序运行负载测试时,可以监视不同 Azure 应用程序组件(服务器端指标)的资源指标。 在负载测试运行时,在测试完成后,可以在 Azure 负载测试仪表板中监视和分析资源指标。
创建或更新负载测试时,可以配置 Azure 负载测试将监视的应用组件列表。 可以修改每个应用组件的默认资源指标列表。
详细了解 Azure 负载测试支持哪些 Azure 资源类型 。
指标
在负载测试期间,Azure 负载测试收集有关测试执行的指标。 有两种类型的指标:
客户端指标 由测试引擎报告。 这些指标包括虚拟用户数、请求响应时间、失败请求数或每秒请求数。 可以根据这些客户端指标 定义测试失败条件 。
服务器端指标 适用于 Azure 托管的应用程序,并提供有关 Azure 应用程序组件的信息。 Azure 负载测试与 Azure Monitor(含 Application Insights 和容器见解)集成,以从 Azure 服务捕获详细信息。 根据服务的类型,可以使用不同的指标。 例如,可以使用数据库读取次数、HTTP 响应类型或容器资源消耗指标。 还可以根据这些服务器端指标 定义测试失败条件 。
相关内容
现在,你已了解 Azure 负载测试开始创建负载测试的关键概念。
- 了解 Azure 负载测试的工作原理。
- 了解如何 为网站创建和运行基于 URL 的负载测试。
- 了解如何 识别 Azure 应用程序中的性能瓶颈。
- 了解如何 使用 CI/CD 设置自动回归测试。