Azure 应用服务从 HttpClient 返回 502 错误网关

标签 azure asp.net-core azure-web-app-service

我有一个在 Azure 上运行的应用服务(计划 B2)。

我从 Docker 容器运行的集成测试正在一一调用一些应用服务端点,有时会收到 500 或 502 错误。

当我调试测试时,我在调用之间进行一些暂停,并且所有请求都成功工作。另外,当我扩展我的应用程序服务时,一切正常。(我不想扩展,因为 cpu 和其他参数很低。)

在我的测试中,我只有一个 HttpClient,并在最后将其丢弃,因此我认为不应该存在任何连接泄漏。

此外,在 TCP 连接中,我在 Azure docs 中总共有大约 60 个连接限制为 1,920。 enter image description here

enter image description here

这个应用程序没有被任何用户访问,但这里它说我有最大连接数。有什么办法可以跟踪这些连接吗?为什么当我收到这些 5xx 错误时,我在应用洞察中看不到任何内容?另外,当限制为 1920 时,15 个连接如何超出限制?这些连接是否与我的错误有关以及如何修复它们?

最佳答案

您在 Application Insights 中看不到它们,因为它们发生在 IIS 级别,这会破坏请求,因此数据不会发送到 Application Insights。

查找信息的位置是“诊断和解决问题”,然后是“可用性和性能”。更多信息在这里:

https://learn.microsoft.com/en-us/azure/app-service/overview-diagnostics

PS:我确实认为问题与您的 HTTPClient 的 Dispose 有关。这是一个众所周知的问题,也是他们引入 HttpClientFactory 的原因。更多信息在这里:

https://www.stevejgordon.co.uk/httpclient-creation-and-disposal-internals-should-i-dispose-of-httpclient

https://stackoverflow.com/a/15708633/1384539

关于Azure 应用服务从 HttpClient 返回 502 错误网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64877508/

相关文章:

azure - 引用摘要验证失败

c# - 如何在 MVC6 中正确注入(inject) HttpContext

macos - 在 ASP.NET Core 中的 Mac Docker 上运行的 SQL Server 的连接字符串是什么?

azure - Azure 网站的最大横向扩展

azure - 无法使用 Azure Pipelines 将 Remix 应用程序部署到 Azure 应用程序服务

azure - 如何向 Common Data Service 中批量插入?

Azure Functions 在创建新 key 版本或 Key Vault 过期时触发

c# - Kestrel 收到请求时无法停止 asp.net core Windows 服务

c# - 如何从 SQL Azure 应用服务 Web 应用写入日志文件?

c# - 我的代码是在 Web 角色还是网站中运行?