【问题标题】:Jmeter Load test of 50 users requesting Azure API Management endpoint - Error: ClientConnectionFailure: at transfer-response请求 Azure API 管理端点的 50 个用户的 Jmeter 负载测试 - 错误:ClientConnectionFailure:在传输响应时
【发布时间】:2022-01-27 09:57:09
【问题描述】:

我们有一个 Azure 应用程序,其中 Functions Apps(后端)与 Azure SQL Server 通信,并且是通过 API 管理服务的前端(并且我们通过调用 API 的应用程序网关)。 应用程序可以正常工作,但是一旦我们对 50 到 100 个并发用户进行负载测试,我们就会看到一些带有 (ClientConnectionFailure: 在传输响应时)。

[{"severityLevel":"Error","outerId":"0","message":"Client connection was unexpectedly closed.","type":"ClientConnectionFailure","id":"0","parsedStack":[{"method":"transfer-response","level":0,"line":0}]}]

我检查了 Application Insights 上的跟踪表,我没有看到任何故障,所以我不确定这是否是由于 JMeter 负载测试客户端导致连接在响应来自负载下的服务器之前断开。

有人遇到过这样的问题并找到了解决办法吗?我们正在使用高级服务计划,因此没有发现我们的服务或 SQL 调用存在重大问题。

感谢您的帮助。

谢谢,

【问题讨论】:

标签: jmeter azure-functions azure-application-insights azure-api-management


【解决方案1】:

如果错误只能在负载下重现,我会假设您的函数或数据库响应时间在某个时候超过了 JMeter 的超时时间。

默认情况下,JMeter 的 HTTP Request 采样器没有定义任何超时,这意味着 JMeter 将永远等待响应,但是 JDK 和操作系统级别可能存在超时,因此设置一些合理的值可能是个好主意那里的价值。

超时设置位于“高级”标签下。如果您有多个 HTTP 请求采样器 - 考虑引入 HTTP Request Defaults,以便您可以在一处修改设置,并且更改将传播到 HTTP 请求默认值 scope 中的所有 HTTP 请求采样器。

如果这没有帮助,请检查您的网络基础设施:路由器、网关、防火墙、负载平衡器等,因为它们中的每一个都可能有自己的超时设置。

【讨论】:

  • 谢谢@Dmitri-T 如果有帮助,我会考虑更改此设置并在负载下观察它。我们的 Infra 都是 Azure,所以我不太愿意这样做,但我也将尝试仅对函数应用程序进行负载测试以查看其行为。
【解决方案2】:

my initial thread 报告此问题后,除了 cmets 和响应正在谈论后端超时这一事实外,没有证据表明后端性能不佳。我检查了日志,正如我在原始线程中提到的,后端和客户端应用程序的响应时间很短(Premium Plan on Azure Functions

【讨论】:

  • 谢谢 Hugo,我们在这里使用高级应用服务计划,我们正在测试 100 个并发用户,这个数字并不高。我们的功能在某些负载后大约需要 4 到 5 秒,总体上大约需要 1 到 2 分钟导致客户端连接失败。我将继续探索以了解发生了什么并在此线程上报告。
  • 尝试减少并发用户数(函数的实例),看看错误是否仍然存在。另外,您在 APIM 实例中使用的是哪一层?也许升级层值得一试?
  • 谢谢@Hugo,我也在 APIM 的高级级别,并发性是负载测试的一部分(100 个并发用户执行相同的操作)所以不幸的是我不能从 Jmeter 中减少这个数字,因为那是客户希望看到的响应时间。由于我们使用的是应用服务计划 P1V2,因此真的不确定如何在此处减少实例。
  • 尝试将超时减少到几秒钟(足以完成一个正常的请求),然后查看有多少超时,这样您就知道有多少请求在排队。
  • 另外,我注意到您有一个函数直接连接到 Azure Sql 服务器(Azure SQL Db?!?)和 Azure APIM。由于您在并发方面有要求,因此您可能在并发级别方面受到限制,除非您运行数据库的多个实例并确保它们服务于不同的请求。如果您可以考虑在异步模式下处理这些请求,那么我建议您看看这种模式。它可能有助于缓解所有这些问题 - docs.microsoft.com/en-us/azure/architecture/patterns/…
猜你喜欢
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多