Azure 中托管的 ASP.Net Web API 高响应时间

Posted

技术标签:

【中文标题】Azure 中托管的 ASP.Net Web API 高响应时间【英文标题】:ASP.Net Web API high response time hosted in Azure 【发布时间】: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、服务总线 【参考方案1】:

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

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

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

【讨论】:

以上是关于Azure 中托管的 ASP.Net Web API 高响应时间的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 中托管在 Azure 中的 ASP.NET Core Web 应用程序上的异常 HTTP 响应

从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”

ASP.NET 5:Azure Web 应用 CORS 在延迟后停止工作

如何托管 ASP.Net Web 应用程序

如何在托管的 ASP.NET Web API 中使用 System.IO.File 提供相对路径?

Xamarin Android 使用 Asp.Net core web api 连接到 Azure Notification Hub [关闭]