我们在 AppService (S1) 中托管了 ASP.Net Core 2.1 Web API,可与 Azure SQL DB (S1-20DTU) 进行通信。两者都在同一地区。在负载测试期间,我们发现某些 API 实例需要花费太多时间才能返回结果。
我们尝试解决性能问题,以下是我们的观察结果。
- API 大多数情况下会在 0.5 秒内响应。
- API 方法都是异步方法。
- 有时需要大约 50 秒到一分钟多的时间。
- CPU 和内存利用率低于 60%
- 数据库有 20 个 DTU 容量,其中 6 个 DTU 用于负载测试。
- 在下面来自 Application Insights 的示例快照中,我们看到请求的总持续时间为 27.4 秒。但数据库依赖持续时间仅为97ms。在调用数据库之前没有任何事件。请引用下面的例子。
有人可以帮我理解这 27 秒的等待时间内发生了什么吗?这可能是什么原因?
最佳答案
- 我建议检查 Application Insights 资源上的应用程序 map ,如下所示,以仔细检查依赖关系。
- 访问应用服务上的“诊断和解决问题”链接(如下所示)验证 CPU 和内存指标,并运行可用性和性能报告以查明负载测试期间是否存在任何问题。
- 在 API 上使用异步方法以最大限度地提高 CPU 使用率。工作进程线程可能已达到极限,而您的应用程序是瓶颈。当您运行上面第 2 点中提到的报告时,您应该会得到一些见解。
关于Azure 应用服务性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61632614/