【问题标题】:.NET core app hosted on azure first request very slow托管在 azure first 请求上的 .NET 核心应用程序非常慢
【发布时间】:2022-01-31 20:20:31
【问题描述】:

我在 Azure 上托管的 .NET 核心应用程序存在问题。 在生产中一切正常,但在不活动期后的第一个请求非常慢(有时长达 10-15 秒)。

我不知道问题出在哪里,因为之前我在 DigitalOcean 上托管应用程序时没有发生过。

我在下面添加了一些 Azure 应用程序的屏幕截图。 如果你们中的任何人已经遇到过类似的问题,请告诉我吗?

非常感谢!

应用服务详情

Linux 计划详情

慢速请求示例

应用服务配置

【问题讨论】:

  • 您的应用程序是否使用 Azure 托管的数据库?数据库是否会处于暂停状态并因此在不活动后导致较长的初始加载时间?
  • @SpaceBeeGaming 是的,我在 azure 上托管了 2 个数据库(一个用于资源,一个用于身份)。它们都处于具有 5 个 DTU 的“基本”定价层,但我没有看到任何自动暂停...

标签: c# azure .net-core azure-web-app-service identityserver4


【解决方案1】:

如果您使用部署槽进行部署,则可以利用预热。 你甚至可以自定义操作:见documentation

【讨论】:

  • 感谢您的回答。不幸的是,我不认为它与部署有关......我的应用程序部署了几周,老实说,每天经过一些不活动时间后,第一个请求非常慢。
  • 在同一文档中它说:“首先将应用程序部署到插槽并将其交换到生产环境中,确保插槽的所有实例在被交换到之前预热 “这不是你要找的吗?顺便说一句 - 这不是“部署”,这是“部署槽”。
【解决方案2】:

这是预期行为,并且在本地 IIS 部署中也会发生。

当您将站点的新版本部署到 azure 并随后向其发出请求时,它需要将其依赖的资源加载到范围内,然后在该服务的生命周期内可用。

在生产环境中,调用运行状况检查页面(您应该已经拥有!)可能是明智之举,这将在资源超出范围的情况下缓解这种延迟。

【讨论】:

  • 这不仅是在部署之后......我的应用程序已经部署了数周,但每天在几个小时不活动后,第一个请求很慢。
  • @smil0h 如前所述,这是典型的行为。在标准 IIS 中,应用程序池将循环使用,直到该点之后的第一个请求才会加载所有资源。我只能假设此行为与 Azure Web 应用程序相同。
猜你喜欢
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2018-02-18
相关资源
最近更新 更多