Azure网站热身扩展

时间:2017-06-20 11:44:41

标签: azure web-applications

我正在尝试确保在部署或扩展时我的网站已完全预热。为此,我已经利用了这里讨论的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>

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

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

如何防止扩展的应用程序在预热之前接收请求?我怎样才能让它真正做到如下所述的热身: https://feedback.azure.com/forums/169385-websites/suggestions/6972595-application-initialization-to-warm-up-specific-pag

由于

1 个答案:

答案 0 :(得分:4)

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

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

  1. 转到KUDU https:// {appservicename} .scm.azurewebsites.net / support
  2. 选项卡缓解 - &gt;慢请求
  3. 添加规则以在请求需要更长时间时获取内存转储。我们为:

    添加规则

    请求数量:50

    拍摄时间(秒):10

    间隔(秒):60

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

    Configuration for memory dump

    1. 在标签&#34;动作&#34;。添加&#34;自定义操作&#34;。更改CollectKillAnalyze for CollectLogs。 Help
    2. Action

      1. 重现问题并下载.dump文件。您可以从门户网站上找到这些文件的链接&#34;诊断和解决问题&#34;。或者来自Kudu in&#34; D:\ home \ data \ DaaS \ Logs&#34; enter image description here
      2. 使用DebugDiagWinDebug
      3. 分析此文件
      4. 我们没有在预热时初始化Redis连接。所以基本上RedisClient.get在代码中有一个同步块,只允许一个线程访问时间。 由于卷非常高,因此数百个工作线程正在等待同步块。 - 它需要从所有者传递到下一个,然后是下一个。
      5. Stack trace

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

        我希望这可以帮到你。