你当前正在访问 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 区域中。
配置测试计划
在本部分,你将配置负载测试的缩放设置。
使用 Azure 订阅的凭据登录到 Azure 门户。
转到你的负载测试资源。 在左侧窗格中,选择“测试”以查看负载测试列表。
在列表中选择你的负载测试,然后选择“编辑”。
还可以从测试详细信息页编辑测试配置。 为此,请依次选择“配置”、“测试”。
在“编辑测试”页面,选择“加载”选项卡。使用“引擎实例”滑块控件更新测试引擎实例的数量,或直接在输入框中输入值。
选择“应用”以修改测试并在重新运行测试时使用新配置。
监视引擎实例指标
若要确保测试引擎实例本身不是性能瓶颈,可以监视测试引擎实例的资源指标。 测试实例的资源使用率较高可能会对负载测试结果产生负面影响。
Azure 负载测试报告每个实例的四个资源指标:
- CPU 百分比。
- 内存百分比。
- 每秒网络字节数。
- 虚拟用户数。
如果在测试运行期间的平均 CPU 百分比或内存百分比保持在 75% 以下,则认为测试引擎实例运行良好。
若要查看引擎资源指标,请执行以下操作:
转到你的负载测试资源。 在左侧窗格中,选择“测试”以查看负载测试列表。
在列表中,选择负载测试以查看测试运行列表。
在测试运行列表中,选择测试运行。
在测试运行仪表板中,选择“引擎运行状况”以查看引擎资源指标。
或者,使用筛选器控件选择特定的测试引擎实例。
排查运行不正常的引擎实例
如果一个或多个实例显示资源使用率较高,则可能会影响测试结果。 若要解决此问题,请尝试下面的一个或多个步骤:
减少每个测试引擎的线程(虚拟用户)数。 若要实现目标数量的虚拟用户,可以增加负载测试的引擎实例数。
确保脚本有效,无需冗余代码。
如果引擎运行状况未知,请重新运行测试。
后续步骤
- 有关比较测试结果的详细信息,请参阅比较多个测试结果。
- 若要了解性能测试自动化,请参阅配置自动性能测试。
- 有关 Azure 负载测试中的服务限制和配额的详细信息。