本文将介绍如何诊断和排查 Azure 负载测试中失败的负载测试。 Azure 负载测试提供多种方法来确定负载测试失败的根本原因。 例如,可以使用负载测试仪表板,或者下载测试结果或测试日志文件以进行深入分析。 另外,还可以配置服务器端指标,以找出应用程序终结点的问题。
Azure 负载测试使用两个指标来确定负载测试的结果:
测试状态:指示负载测试是否能够成功启动并完整运行测试脚本。 例如,如果 JMeter 或 Locust 测试脚本中存在错误,或者由于太多请求失败,自动停止侦听器中断了负载测试,测试状态将显示为“失败”。
测试结果:指示对测试失败条件的评估结果。 如果满足至少一个测试失败条件,测试结果将设置为“失败”。
根据不同的指标,你可以使用不同的方法来确定测试失败的根本原因。
先决条件
- 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- 已完成测试运行的 Azure 负载测试资源。 如果需要创建 Azure 负载测试资源,请参阅创建并运行负载测试。
确定负载测试的结果
使用以下步骤获取负载测试的结果:
在 Azure 门户中,转到你的负载测试资源。
在左窗格中选择“测试”,以查看测试列表。
从列表中选择一个测试,以查看该测试的所有测试运行。
测试运行列表会显示“测试结果”和“测试状态”字段。
或者,选择一个测试运行,以查看该测试运行的负载测试仪表板。
诊断测试失败
根据 Azure 负载测试是否能够运行并完成测试脚本,可以使用不同的方法来诊断负载测试失败的原因。
负载测试未能完成
负载测试未能完成时,测试运行的测试状态将设置为“失败”。
多种原因可能会导致负载测试未能完成。 负载测试未完成的示例原因:
- 测试脚本中存在错误。
- 测试脚本使用了 Azure 负载测试不支持的 JMeter 功能。 了解支持的 JMeter 功能。
- 测试脚本引用了测试引擎实例上不存在的文件或插件。
- 由于太多请求失败且错误率超过阈值,自动停止功能中断了负载测试。 详细了解 Azure 负载测试中的自动停止功能。
使用以下步骤来帮助诊断测试未完成的问题:
负载测试已完成
负载测试可能会完整运行测试脚本(测试状态为“已完成”),但可能未通过所有测试失败条件。 如果有至少一个测试条件未通过,测试运行的测试结果将设置为“失败”。
按照以下步骤来帮助诊断测试未能满足测试条件的问题:
- 在负载测试仪表板中查看测试失败条件。
- 在负载测试仪表板中查看采样器统计信息,以进一步确定测试脚本中的哪些请求可能会导致问题。
- 在负载测试仪表板中查看客户端指标。 还可以根据需要使用筛选控件筛选特定请求的图表。
- 下载测试结果,以获取各个请求的错误信息。
- 验证测试引擎运行状况指标,以确定测试引擎上可能存在的资源争用。
- (可选)添加应用组件并监视服务器端指标,以确定应用程序终结点的性能瓶颈。
下载 Apache JMeter 或 Locust 工作节点日志
运行负载测试时,Azure 负载测试测试引擎会执行 Apache JMeter 或 Locust 测试脚本。 在负载测试期间,Apache JMeter 和 Locust 会在工作节点日志中存储详细的日志记录。 可以在 Azure 门户中为每个测试运行下载这些工作节点日志。 Azure 负载测试会为每个测试引擎实例生成一个工作节点日志。
注释
Azure 负载测试仅在工作节点日志中记录 WARN
或 ERROR
级别的日志消息。 要获取 DEBUG
日志,请参阅在调试模式下运行测试。
例如,如果测试脚本存在问题,负载测试状态将为“失败”。 在工作器日志中,你可能会找到有关问题原因的其他信息。
要下载 Azure 负载测试测试运行的工作器日志,请执行以下步骤:
在 Azure 门户中,转到你的 Azure 负载测试资源。
选择“测试”以查看测试列表,然后从列表中选择你的负载测试。
从测试运行列表中,选择一个测试运行以查看负载测试仪表板。
在仪表板上,依次选择“下载”、“日志”。
浏览器现在应该会开始下载一个压缩文件夹,其中包含每个测试引擎实例的 JMeter 或 Locust 工作器节点日志文件。
可以使用任何 zip 工具提取文件夹并访问日志文件。
worker.log 文件可帮助诊断负载测试失败的根本原因。 在屏幕截图中,可以看到测试失败是因为缺少文件。
相关内容
- 了解如何导出负载测试结果。
- 了解如何监视服务器端应用程序指标。
- 了解如何获取基于 Azure 应用服务的应用程序的详细见解。
- 了解如何比较多个负载测试运行。