Azure 应用服务性能问题
Azure AppService Performance Issue
我们有 ASP.Net Core 2.1 Web API 托管在与 Azure SQL DB (S1-20DTU) 通信的 AppService (S1) 中。两者都在同一地区。在负载测试期间,我们发现一些 API 实例花费了太多时间才能 return 结果。
我们尝试解决性能问题,以下是我们的观察结果。
- API 大多数情况下会在 0.5 秒内响应。
- API方法都是异步方法。
- 有时需要大约 50 秒到一分多钟。
- CPU & 内存利用率低于 60%
- 数据库有 20 个 DTU 容量,其中 6 个 DTU 用于负载测试。
- 在下面来自 Application Insights 的示例快照中,我们看到请求的总持续时间为 27.4 秒。但数据库依赖持续时间仅为 97ms。在调用数据库之前没有 activity。请参考下面的例子。
有人可以帮助我了解在这 27 秒的等待时间内发生了什么。这可能是什么原因?
- 我建议检查 Application Insights 资源上的应用程序映射,如下所示,以仔细检查依赖项。
- 通过如下所示转到应用程序服务上的 "Diagnose and solve problems" link 和 运行 可用性和性能报告来验证 CPU 和内存指标,以了解是否您的负载测试期间出现任何问题。
- 在您的 API 上使用异步方法以最大限度地利用 CPU。可能是工作进程线程达到了极限,而您的应用程序是瓶颈。当您 运行 上面第 2 点中提到的报告时,您应该会有一些见解。
S1 层将支持不超过 900 个并发会话。如果您在负载测试期间每秒请求(RPS 率)非常高,您可能会遇到问题。
此外,对于密集型工作负载,建议使用 S3 及更高版本。检查所有连接是否正确关闭也有帮助
您可以在下面找到有关不同定价层及其功能的详细信息 link
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dtu-resource-limits-single-databases
我们有 ASP.Net Core 2.1 Web API 托管在与 Azure SQL DB (S1-20DTU) 通信的 AppService (S1) 中。两者都在同一地区。在负载测试期间,我们发现一些 API 实例花费了太多时间才能 return 结果。
我们尝试解决性能问题,以下是我们的观察结果。
- API 大多数情况下会在 0.5 秒内响应。
- API方法都是异步方法。
- 有时需要大约 50 秒到一分多钟。
- CPU & 内存利用率低于 60%
- 数据库有 20 个 DTU 容量,其中 6 个 DTU 用于负载测试。
- 在下面来自 Application Insights 的示例快照中,我们看到请求的总持续时间为 27.4 秒。但数据库依赖持续时间仅为 97ms。在调用数据库之前没有 activity。请参考下面的例子。
有人可以帮助我了解在这 27 秒的等待时间内发生了什么。这可能是什么原因?
- 我建议检查 Application Insights 资源上的应用程序映射,如下所示,以仔细检查依赖项。
- 通过如下所示转到应用程序服务上的 "Diagnose and solve problems" link 和 运行 可用性和性能报告来验证 CPU 和内存指标,以了解是否您的负载测试期间出现任何问题。
- 在您的 API 上使用异步方法以最大限度地利用 CPU。可能是工作进程线程达到了极限,而您的应用程序是瓶颈。当您 运行 上面第 2 点中提到的报告时,您应该会有一些见解。
S1 层将支持不超过 900 个并发会话。如果您在负载测试期间每秒请求(RPS 率)非常高,您可能会遇到问题。
此外,对于密集型工作负载,建议使用 S3 及更高版本。检查所有连接是否正确关闭也有帮助
您可以在下面找到有关不同定价层及其功能的详细信息 link https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dtu-resource-limits-single-databases