【问题标题】:Cloud Service Always On Not working云服务始终开启 不工作
【发布时间】:2015-12-21 21:41:30
【问题描述】:

我在 Azure 的云服务中运行了一个 Web Api 服务。我注意到很多人在这里第一次调用服务似乎需要很长时间(几乎 1 分钟),随后的调用是正常的。我环顾四周,想到了一些解决方案,其中一个是将启动脚本添加到部署的角色启动

REM *** Prevent the IIS app pools from shutting down due to being idle.
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

REM *** Prevent IIS app pool recycles from recycling on the default schedule of 1740 minutes (29 hours).
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

以及将 AppPool 的启动模式属性设置为 AlwaysOn。进行这些更改后,当最初部署云服务并命中 Web 服务时,我仍然看到延迟问题。那么这里可能发生了什么?我是否需要编写脚本在云服务启动时“预热”网络服务?

【问题讨论】:

    标签: azure iis azure-cloud-services


    【解决方案1】:

    Isaac 遇到了类似的问题,正如您所建议的,在新部署(自动)之后添加了对 API 的多个调用,因此生产用户不会遇到延迟。

    我也很好奇是否有更好的方法。

    【讨论】:

    • 你是怎么做到的? Azure 工作?启动时运行的 ping 命令?我很好奇这样做的最佳方法是什么。
    • 在我们的场景中,我们的 DevOps 流程(自动化部署和构建)允许我们在部署成功结束时运行应用程序(Visual Studio 发布管理)作为定义的步骤。我们只是构建了一个在加载时运行 AJAX 调用的应用程序。
    • 很公平,我可以研究类似的东西。谢谢你的提示。我不会将您的答案标记为解决方案,因为我有兴趣查看其他人的回复。
    【解决方案2】:

    您可以使用暂存环境进行零停机部署。将您的应用程序部署到暂存槽并在那里预热。当你觉得准备好了,就换。 Azure 将耗尽当前连接并顺利更改端点。 Check this.

    【讨论】:

    • 但是您仍然需要预热应用程序对吗?所以练习是一样的,只是你减轻了生产槽的延迟。我在关注吗?
    • 每当您部署新代码时,应用程序池都会回收,您无法阻止这种情况。无论您是部署在生产槽还是暂存槽,新应用程序都需要一些时间才能启动。
    【解决方案3】:

    我使用 Azure 调度程序作业,它每 5 分钟对我的 url 执行一次 GET。您可以根据需要经常安排它。默认情况下它还具有自动重试功能,您也可以为失败创建操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多