首页 > 解决方案 > Azure 中托管的 ASP.Net Web API 高响应时间

问题描述

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

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

然后我试图找到与此问题相关的任何指标。我发现在API 挂起之前,Handle 计数越来越高。以下指标也大约在同一时间增加:

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

响应时间

响应时间

处理计数

处理计数

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

任何人都可以帮助找出原因吗?

更新 1:

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

我也注意到 TCP 已建立很高

TCP 建立

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

标签: performanceazureazure-web-app-serviceazure-app-service-plans

解决方案


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

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

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

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


推荐阅读