Azure 应用服务响应非常缓慢

6
自几周以来,我发现我的Web应用响应时间非常长。这是一个托管在Azure上的.NET应用程序服务。我指的是简单请求需要超过20秒的时间。
在以下请求中,Web应用程序接收请求,检查身份验证令牌是否有效,然后查询数据库并运行一些简单代码以返回一些JSON数据。
要使用此.NET后端服务,用户需要通过Azure AD进行身份验证,我们使用JWT令牌进行身份验证。每当Web服务器接收到请求时,它直接询问Azure AD用户是否经过身份验证。在发出Azure AD请求之前,几乎没有任何代码被触及。
通常以上所有操作(检查身份验证、执行数据库查询、将请求解析为JSON)应该耗费少于500毫秒。
但现在,有时我们可以在应用程序洞察中看到这种情况:

Application Insights screenshot

我看到的是,在web服务器询问Azure AD令牌是否有效之前,服务器会“挂起”约12秒钟!此外,之后发生的所有事情所需的时间也太长了。另外,我也不明白两个数据库请求之间的差距。第二个请求可能永远不会超过> 1000ms,但在截图中确实超过了此时间。
我们在同一时间段收到了许多这样的慢响应。一小时后,一切都恢复正常(然后截图中的条纹状条形开始紧接着彼此出现,就像它应该的那样),又一个小时后,它再次变慢。 我不知道从哪里开始搜索。我希望你们能给我一些搜索方向和/或想法,为什么会发生这种情况。
我已经检查了服务器的CPU负载和内存负载。有时很高(峰值> 80%),但我没有看到100%左右的明显瓶颈。此外,该负载相对稳定,并且与慢时刻没有重合的峰值,因此我认为问题不在那里。
编辑:我使用Web服务诊断来查看它是否可以为我提供一些指导。在这里,我看到以下内容:

enter image description here

HandlerChanged From(ExtensionlessUrlHandler-Integrated-4.0) to (System.Web.Http.WebHost.HttpControllerHandler)ManagedPipelineHandler。有人知道这是什么,我该如何调试?


@ThiagoCustodio 谢谢。我看到在“Web App Slow”中,它计算了10,000个请求,并显示消息HandlerChanged From(ExtensionlessUrlHandler-Integrated-4.0) to (System.Web.Http.WebHost.HttpControllerHandler)。你有什么想法吗?我也会将这些信息添加到我的问题中。 - Richh94
我正在使用应用程序进行一些出站TCP连接,所以这是确实可能的。但是,我们正在运行一个S3应用服务,我了解到我可以使用8064个连接,我们绝对没有使用那么多的连接... 最好的地方在哪里找到是否发生了这种情况? - Richh94
我分享的第一个链接是"诊断和解决问题",网址是learn.microsoft.com/en-us/azure/app-service/overview-diagnostics。 - Thiago Custodio
很抱歉,我一开始没有看到“TCP连接”选项卡。但是当我点击它时,它显示“未检测到出站TCP连接问题”。顶部的出站请求不到400个,而在S3上应该可以轻松处理8000个。所以我不认为这是问题所在...你还有什么其他想法吗? - Richh94
有关程序方面的内容,请翻译以下英文内容为中文。只返回翻译后的文本:应该有一个关于响应速度缓慢的部分。 - Thiago Custodio
显示剩余4条评论
1个回答

0

在我的应用程序和部署槽上添加了WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG设置后,我也遇到了同样的问题,这是根据RuslanY博客(https://ruslany.net/2019/06/azure-app-service-deployment-slots-tips-and-tricks/)中的提示操作的。上周五我删除了该设置,自那时以来就再也没有出现过这个问题。我猜测ExtentionlessUrlHandler类中使用了WCF,正如RuslanY在博客中所警告的那样。除此之外,我想不出其他的解释,但我很高兴我的应用程序已经解决了这个问题。希望这也能帮助到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接