Azureangular色启动可以持续多久?

假设我将一个相当长时间运行的启动任务包含到我的Azureangular色中 – 运行时间长达几分钟。 如果启动任务运行时间过长,会发生什么情况。

我目前正在testing计算模拟器,并观察以下内容。

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

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

这是预期的行为? 它坚持真正的云吗? 新创企业可以承担多长时间? 除了将解包移入RoleEntryPoint.OnStart()之外,我该如何解决这种情况?

我有同样的问题,所以尝试了一个实验。 我运行了一个启动任务 – taskType =“简单”,这样就可以阻止Roles开始执行 – 让它运行50个小时。 Fabric Controller没有投诉,门户网站也没有显示任何错误。 在50个小时后,它完成了长时间的“无所事事”循环,然后这个启动任务退出,我的Web角色启动正常。

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

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

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

从未尝试过超长的任务,所以可能会有很长的限制。 我似乎记得3小时是一些超时情况下的魔术数字,如角色回收,但我从来没有试过…

Azure Fabric Agent将对此角色做一些心跳检测。 如果这些不被确认(比如长时间阻塞的进程),这可能会导致角色被标记为不可用。

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