Azure角色启动可以采取多长时间的硬限制?

时间:2011-06-06 07:29:33

标签: windows deployment azure cloud

假设我在Azure角色中包含了一个相当长时间运行的startup task - 运行类似于几分钟的内容。如果启动任务运行“太长”会发生什么。

我正在测试Compute Emulator并观察以下内容。

我有一个450兆字节的.zip文件和Info-Zip unzip。启动任务解压缩存档。部署开始,我查看任务管理器。启动了许多服务进程,然后运行unzip.exe。大约两分钟后,所有这些进程都会停止,然后重新启动并再次启动unzip.exe。

所以看起来部署允许运行大约两分钟,然后强制重置并重新启动。

这是预期的行为吗?它真的存在于真正的云上吗?角色创业可以采取多长时间的硬性限制?除了将解包转移到RoleEntryPoint.OnStart()

之外,我该如何解决这种情况

4 个答案:

答案 0 :(得分:7)

我有同样的问题,所以尝试了一个实验。我运行了一个启动任务 - taskType =“simple”,这样它就会阻止角色从开始执行 - 并让它运行50个小时。 Fabric Controller没有抱怨,门户网站没有显示任何错误。它在50小时结束后完成了长时间的“无所事事”循环,然后启动了这个启动任务,我的Web角色启动正常。

所以我的经验测试表明启动任务可能需要很长时间! 至少50个小时。

答案 1 :(得分:2)

答案 2 :(得分:1)

我已经运行了很长时间的启动任务(想想20-30分钟)并且该角色只是处于“忙碌”状态。我不认为只要启动任务仍在执行并且没有以非零返回代码退出,角色将在该状态保持多长时间存在硬限制(事实上,这对于大多数人来说都是一个难题)第一次启动任务创建者弹出提示时)。 FC在技术上仍然运行得很好,所以没有理由“恢复”这个角色(即心跳仍在继续)。

开发人员只是在角色未启动时注意到并发出警告。如果单击“保持等待”选项,它将继续运行“启动”任务以完成。云当然不会这样做(警告你)。

从未尝试过超长的任务,因此可能会有很长的限制。我似乎记得3小时在角色回收等一些超时情况下是一个神奇的数字,但我从未尝试过...

答案 3 :(得分:0)

Azure Fabric Agent会对该角色执行一些心跳。如果这些未得到确认(例如长时间运行的阻止过程),则可能导致该角色被标记为不可用。

您可以尝试将启动过程放入独立运行的后台线程中。这可以帮助您在流程启动时保持角色不被回收。请记住,如果在角色完全启动之前收到请求,您可能需要进行一些调整。还有一种方法(我似乎无法回想起ATM)标记该角色,并在您的流程完成时临时将其从负载均衡器中取出。