Azure网站热身扩展

Obi*_*Eff 9 web-applications azure

我正在尝试确保在部署或扩展时我的网站已完全预热.为此,我利用了此处讨论的App Initialization配置:http: //ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/

我试图让它在扩展上工作,因为它支持这里:https: //feedback.azure.com/forums/169385-websites/suggestions/6972595-application-initialization-to-warm-up-specific -pag

我的配置本身设置如下:

<applicationInitialization>
  <add initializationPage="api/status"/>
</applicationInitialization>
Run Code Online (Sandbox Code Playgroud)

我没有在Initialization元素上指定主机名,因为所有讨论似乎都说它不是必需的.我也将在多个环境中托管这个,并且不知道扩展版本的主机名,因此很难完成所有的配置转换.

当我部署Web应用程序时,预热工作正常,我可以看到它被部署到临时插槽中,然后转到我的状态页面.然而,当我向外扩展时,我看不到它正在变暖.事实上,我可以看到api调用此api,有时会返回503响应,这是来自新缩放的应用程序.

如何防止扩展的应用程序在预热之前接收请求?如何让它实际进行热身,如下所述:https: //feedback.azure.com/forums/169385-websites/suggestions/6972595-application-initialization-to-warm-up-specific-pag

谢谢

Ser*_*fín 5

我们在扩展应用程序服务时遇到了类似的问题。当我们添加新实例时,请求收到 502 Bad Gateway 持续 3 分钟。

\n\n

我将向支持工程师解释我们遵循的步骤,我们可以找到我们的问题。

\n\n
    \n
  1. 转到 KUDU https://{appservicename}.scm.azurewebsites.net/support
  2. \n
  3. 在“缓解”选项卡上 ->“缓慢请求”
  4. \n
  5. 添加一条规则,以便在请求花费较长时间时获取内存转储。我们添加一条规则:

    \n\n

    请求数量:50

    \n\n

    所用时间(秒):10

    \n\n

    间隔(秒):60

  6. \n
\n\n

您应该根据当前的工作负载更改此值。您还可以为 5xx 错误添加另一条规则...

\n\n

内存转储的配置

\n\n
    \n
  1. 在“操作”选项卡上。添加“自定义操作”。将 CollectKillAnalyze 更改为 CollectLogs。帮助
  2. \n
\n\n

行动

\n\n
    \n
  1. 重现问题并下载 .dump 文件。您可以从“诊断和解决问题”门户中找到这些文件的链接。或者从“D:\\home\\data\\DaaS\\Logs”中的 Kudu\n在此输入图像描述
  2. \n
  3. 使用DebugDiagWinDebug分析此文件
  4. \n
  5. 我们没有在预热时初始化 Redis 连接。所以基本上 RedisClient.get 在代码中有一个同步块,它只允许一个线程访问一个时间。\n由于卷非常高,因此数百个工作线程正在等待同步块。\xe2\x80\x93 它需要从所有者传递到下一个,然后再逐个传递到下一个。
  6. \n
\n\n

堆栈跟踪

\n\n

更改Redis连接后进行预热。扩展我们的服务时,我们没有遇到更多问题。

\n\n

我希望这可以帮助你。

\n