诊断 Azure 负载测试中的失败负载测试

本文将介绍如何诊断和排查 Azure 负载测试中失败的负载测试。 Azure 负载测试提供多种方法来确定负载测试失败的根本原因。 例如,可以使用负载测试仪表板,或者下载测试结果或测试日志文件以进行深入分析。 另外,还可以配置服务器端指标,以找出应用程序终结点的问题。

Azure 负载测试使用两个指标来确定负载测试的结果:

  • 测试状态:指示负载测试是否能够成功启动并完整运行测试脚本。 例如,如果 JMeter 或 Locust 测试脚本中存在错误,或者由于太多请求失败,自动停止侦听器中断了负载测试,测试状态将显示为“失败”

  • 测试结果:指示对测试失败条件的评估结果。 如果满足至少一个测试失败条件,测试结果将设置为“失败”

根据不同的指标,你可以使用不同的方法来确定测试失败的根本原因。

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户
  • 已完成测试运行的 Azure 负载测试资源。 如果需要创建 Azure 负载测试资源,请参阅创建并运行负载测试

确定负载测试的结果

使用以下步骤获取负载测试的结果:

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

  2. 在左窗格中选择“测试”,以查看测试列表。

  3. 从列表中选择一个测试,以查看该测试的所有测试运行。

    测试运行列表会显示“测试结果”和“测试状态”字段。

    显示 Azure 门户中测试运行列表的屏幕截图,其中突出显示了“测试结果”和“测试状态”列。

  4. 或者,选择一个测试运行,以查看该测试运行的负载测试仪表板。

    显示负载测试仪表板的屏幕截图,其中突出显示了失败测试的状态信息。

诊断测试失败

根据 Azure 负载测试是否能够运行并完成测试脚本,可以使用不同的方法来诊断负载测试失败的原因。

负载测试未能完成

负载测试未能完成时,测试运行的测试状态将设置为“失败”

多种原因可能会导致负载测试未能完成。 负载测试未完成的示例原因:

  • 测试脚本中存在错误。
  • 测试脚本使用了 Azure 负载测试不支持的 JMeter 功能。 了解支持的 JMeter 功能
  • 测试脚本引用了测试引擎实例上不存在的文件或插件。
  • 由于太多请求失败且错误率超过阈值,自动停止功能中断了负载测试。 详细了解 Azure 负载测试中的自动停止功能

使用以下步骤来帮助诊断测试未完成的问题:

  1. 在负载测试仪表板上验证错误详细信息。
  2. 下载并分析测试日志,以确定 JMeter 测试脚本中的问题。
  3. 下载测试结果,以确定各个请求的问题。

负载测试已完成

负载测试可能会完整运行测试脚本(测试状态为“已完成”),但可能未通过所有测试失败条件。 如果有至少一个测试条件未通过,测试运行的测试结果将设置为“失败”

按照以下步骤来帮助诊断测试未能满足测试条件的问题:

  1. 在负载测试仪表板中查看测试失败条件
  2. 在负载测试仪表板中查看采样器统计信息,以进一步确定测试脚本中的哪些请求可能会导致问题。
  3. 在负载测试仪表板中查看客户端指标。 还可以根据需要使用筛选控件筛选特定请求的图表。
  4. 下载测试结果,以获取各个请求的错误信息。
  5. 验证测试引擎运行状况指标,以确定测试引擎上可能存在的资源争用。
  6. (可选)添加应用组件并监视服务器端指标,以确定应用程序终结点的性能瓶颈。

下载 Apache JMeter 或 Locust 工作节点日志

运行负载测试时,Azure 负载测试测试引擎会执行 Apache JMeter 或 Locust 测试脚本。 在负载测试期间,Apache JMeter 和 Locust 会在工作节点日志中存储详细的日志记录。 可以在 Azure 门户中为每个测试运行下载这些工作节点日志。 Azure 负载测试会为每个测试引擎实例生成一个工作节点日志。

注释

Azure 负载测试仅在工作节点日志中记录 WARNERROR 级别的日志消息。 要获取 DEBUG 日志,请参阅在调试模式下运行测试

例如,如果测试脚本存在问题,负载测试状态将为“失败”。 在工作器日志中,你可能会找到有关问题原因的其他信息。

要下载 Azure 负载测试测试运行的工作器日志,请执行以下步骤:

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

  2. 选择“测试”以查看测试列表,然后从列表中选择你的负载测试。

  3. 从测试运行列表中,选择一个测试运行以查看负载测试仪表板。

  4. 在仪表板上,依次选择“下载”、“日志”

    浏览器现在应该会开始下载一个压缩文件夹,其中包含每个测试引擎实例的 JMeter 或 Locust 工作器节点日志文件。

    显示如何从“测试运行详细信息”页下载测试日志文件的屏幕截图。

  5. 可以使用任何 zip 工具提取文件夹并访问日志文件。

    worker.log 文件可帮助诊断负载测试失败的根本原因。 在屏幕截图中,可以看到测试失败是因为缺少文件。

    显示 JMeter 日志文件内容的屏幕截图。