.NET 8 应用程序中使用容器的 Azure 应用服务的性能问题

问题描述 投票:0回答:1

我在使用 Docker 容器托管在 Azure 应用服务上的 .NET 8 应用程序中遇到性能问题。当我仅将 Azure 应用服务(没有容器)与 Azure SQL 结合使用时,API 请求速度很快(2-3 秒)。但是,当将 Azure 应用服务与 Docker 容器和 Azure SQL 结合使用时,相同的请求大约需要 5-20 秒(在此范围内变化)。

更多信息:

  • 所讨论的 API 请求是一个简单的 GET 请求,它在 Azure SQL 上执行单个查询。
  • 我怀疑可能存在连接问题导致重试,但我不确定如何确认这一点。
  • 我相信这可能与 Docker 容器中的网络配置问题、缺少配置或可能与 Azure SQL 端的某些问题有关,但我仍然不确定。
  • 我在 Application Insights 中看到多个具有相似时间戳的 SQL 依赖项事件,这可能表明存在重试模式,但我在阅读端到端事务详细信息方面没有经验。

问题:

  • 如何确定这些多个 SQL 事件是否是由于连接重试造成的?
  • 与标准 Azure 应用服务设置相比,什么可能导致容器化环境中的性能下降? 我可以采取哪些步骤来排除和解决这些潜在的连接问题?

到目前为止我尝试过的:

  • 我已检查 Application Insights 是否有任何错误消息或失败的依赖项调用,但我不完全确定要查找什么。
  • 我查看了 SQL 查询执行时间,看起来很正常,但是重复的 SQL 事件令人担忧。
  • 容器已分配足够的资源,网络设置应标准。

我已经处理这个问题好几个星期了。任何有关如何解决此性能问题的指导或见解将不胜感激。

azure docker asp.net-core azure-sql-database azure-container-instances
1个回答
0
投票

您可以尝试从 docker 容器 ping sql server 以查看连接,也可以从 docker 容器外部尝试相同的操作。你让 Chace 检查一下 sql server 日志吗?尝试使用 https://learn.microsoft.com/en-us/azure/azure-monitor/app/transaction-search-and-diagnostics?tabs=transaction-search 应用程序中的端到端事务跟踪功能见解。这可以帮助您查看 API 请求的完整时间线(从传入请求到 SQL 查询执行),并确定延迟发生的位置。可以将数据库和Web应用程序设置在同一区域吗?

要确认问题是否与重试相关,您可以应用洞察日志,查看 SQL 依赖项的

dependencyDuration
success
resultCode
字段。如果您看到这样的模式,其中第一次尝试的持续时间较长或失败 resultCode 指示超时或连接问题,然后是持续时间较短的成功尝试,这可能表示重试。您还可以查看他的帖子以获取更多故障排除帮助:https://stackoverflow.com/a/44957720/11147346

© www.soinside.com 2019 - 2024. All rights reserved.