Ric*_*h94 6 .net performance azure
几周以来,我看到我的 web 应用程序的响应时间很长。它是托管在 Azure 上的应用服务中的 .NET 应用。对于一个简单的请求,我说的是 >20 秒。
在下面的请求中,webapp 收到一个请求,它检查身份验证令牌是否有效,然后查询数据库并运行一些简单的代码以返回一些 json。
要使用此 .NET 后端服务,用户需要通过 Azure AD 进行身份验证,我们为此使用 JWT 令牌。每次 Web 服务器收到某个请求时,它都会直接询问 Azure AD 用户是否已通过身份验证。在激发 Azure AD 请求之前几乎没有涉及任何代码。
通常上面的所有内容(检查身份验证,执行数据库查询,解析请求到 json)应该花费 <500 毫秒。
但是现在,有时,我们可以在 Application Insights 中看到这一点:
我看到的是,网络服务器在询问 Azure AD 令牌是否有效之前“挂起”了大约12 秒!
此外,之后发生的一切,花费的时间也太多了。我也不明白这两个数据库请求之间的差距。第二个请求永远不会超过 1000 毫秒,但在屏幕截图中确实如此。
我们在同一时间范围内收到了很多缓慢的响应。一个小时后,一切都恢复了活力(然后截图中的条纹条紧接着开始,就像它应该的那样),又一个小时后,它的速度又变慢了。
我不知道从哪里开始我的搜索。我希望你们能给我一些搜索方向和/或想法为什么会发生这种情况。
我已经检查了服务器的 CPU 负载和内存负载。它有时很高(峰值 >80%),但我没有看到 100% 左右的明显瓶颈。此外,该负载相对恒定并且与慢速时刻没有峰值,所以我认为问题不存在。
编辑:我使用 Web 服务诊断来检查是否可以给我一些指导。在这里,我看到以下内容:
HandlerChanged From(ExtensionlessUrlHandler-Integrated-4.0) to (System.Web.Http.WebHost.HttpControllerHandler)和ManagedPipelineHandler。有谁知道那是什么以及我如何调试它?
小智 0
根据 RuslanY 博客上的提示(https://ruslany.net/2019/06/azure-app-service-deployment- ),在我的应用程序和部署槽上添加设置 WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG 后,我也遇到了同样的问题插槽提示和技巧/)。上周五我删除了该设置,从那时起该问题就不再发生了。我猜想 ExtentionlessUrlHandler 类中的某些内容使用 WCF,正如 RuslanY 在博客中警告的那样。我没有想到其他解释,但我很高兴我的应用程序解决了这个问题。希望这也会对您有所帮助。