- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们有一个具有多个实例的 Azure 云服务。这些实例可能会陷入致命状态,此时我们希望触发实例重新启动。
我们尝试过调用:
RoleEnvironment.RequestRecycle();
但根据 Azure 门户,该实例继续保持正常运行,没有任何重新启动的迹象。
我们甚至尝试通过发出以下命令将其置于错误状态:
Environment.FailFast("Failed.");
但这似乎也不会触发重新启动(同样,至少根据 Azure 门户)。
我们是否应该在 Azure 门户中看到这种情况发生?如果是,什么可能会阻止它重新启动?
更多详情
基本上,作为我们逻辑的一部分,我们正在旋转一个单独的线程来执行一些繁重的处理,并且此处理有一个超时,此时我们需要重新启动以终止线程并释放所有消耗的资源。我知道理想情况下我们会对线程进行更正确的处理并取消它,但目前这不是一个选项。所以我们只想重新启动。
简化版本看起来像这样:
var mainTask = Task.Run(() => DoHeavyProcessing());
var timeoutTask = Task.Delay(TimeSpan.FromMinutes(10));
if (Task.WaitAny(mainTask, timeoutTask) == 1)
{
RoleEnvironment.RequestRecycle();
}
但是,RequestRecycle()
似乎并没有触发重新启动。
最佳答案
因此,我们对此进行了一些进一步的测试,并发现 - 至少根据我们所经历的情况 - RequestRecyle
确实不会重新启动云服务VM,而只是回收 VM 内的角色实例。
Environment.FailFast 也是如此——它正在回收角色实例,而不是完全重新启动。
因此,最终效果是相同的,甚至更好一些,因为这可能比完全重新启动要快一些。
对于那些寻求完全重新启动的人(在我们的例子中没有必要),可能需要关闭 shell:
Process.Start("shutdown","/r /t 0");
关于c# - RoleEnvironment.RequestRecycle() 不触发重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845469/
我们有一个具有多个实例的 Azure 云服务。这些实例可能会陷入致命状态,此时我们希望触发实例重新启动。 我们尝试过调用: RoleEnvironment.RequestRecycle(); 但根据
我是一名优秀的程序员,十分优秀!