【问题标题】:ASP.Net Web API high response time hosted in AzureAzure 中托管的 ASP.Net Web API 高响应时间
【发布时间】:2020-02-18 09:17:27
【问题描述】:

我有一个 Web API,它位于 P3V2 应用服务计划下的 Azure 应用服务中。有时响应时间太长(超过 1 分钟)并且应用程序挂起。我已启用 Auto scaling up to 5 instance,当响应时间大于 5 秒时触发。

但是当我在故障发生时分析过去的数据时,我发现向外扩展对这个问题没有帮助。原因,同样的事情发生在多个场合,但 API 没有挂起。

然后我试图找到与此问题相关的任何指标。我发现 句柄计数 在 API 挂起之前就变高了。以下指标也在大约同时增加:

  • 响应时间 - 超过 1 分钟
  • Http 服务器错误 - 高
  • CPU 时间 - 正常

这些快照是在同一时间范围内拍摄的。

响应时间

句柄计数

重启应用服务后,API 工作正常。如果我不这样做,它仍然没有响应。

谁能帮忙找出原因?

更新 1:

多个应用在同一个应用服务计划中运行。这些应用程序之间存在外部依赖关系。我正在使用 Azure 存储、Azure 服务总线和 Azure SQL 数据库。

我还注意到 TCP 已建立很高

还有一点需要提一下;当我监控实时指标时,发生这种挂起时它没有收到来自应用程序的见解。

【问题讨论】:

  • 这看起来您的应用程序可能有问题。您应该查看 API 外部依赖项的可用性,例如数据存储。另外,您是否正在呼叫外部服务?如果是这样,您是否使用HttpClient
  • @rickvdbosch 是的,当我更新时,我正在使用 azure sql server、azure storage、服务总线

标签: performance azure azure-web-app-service azure-app-service-plans


【解决方案1】:

您的代码似乎有问题。就像提到的@rickvdbosch 一样,检查您的依赖时间,例如数据库操作、服务总线写入操作等。还要检查您是否遇到死锁/无限循环、详尽的正则表达式。

帮助分析的一种方法是将应用洞察 SDK 安装到您的应用中。然后,您可以详细评估每个 API 调用,并准确了解哪些代码执行时间最长。

App Insights --> Performance -->(选择一个操作)-->samples

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2014-07-04
    • 2022-11-08
    • 1970-01-01
    • 2020-07-10
    • 2019-03-30
    • 1970-01-01
    • 2015-03-21
    • 2015-01-09
    相关资源
    最近更新 更多