手动重新启动Azure辅助角色"WaWorkerHost.exe"

MHO*_*OOS 6 c# azure azure-worker-roles

据我所知,Azure Worker角色是在名为WaWorkerHost.exe的Host应用程序的帮助下运行的,还有另一个名为WaHostBootstrapper.exe的应用程序,用于检查WaWorkerHost.exe是否正在运行,如果没有,它将运行WaWorkerHost.exe.

  1. 这种"工人角色状态检查"多久发生一次?
  2. 如何快速重新启动Worker角色?我可以重启机器工作者角色正在运行并等待几分钟或选择以下传统方法:

    Taskkill/im/f WaWorkerHost.exe

    并等待几分钟让WaHostBootstrapper.exe启动,但这非常低效和缓慢.是否有任何(即时)方法重新启动辅助角色?

  3. 我可以运行类似下面的内容并期望与WaHostBootstapper.exe类似的结果或还有其他考虑因素吗?

    WaWorkerHost.exe {MyAzureWorkerRole.dll}

yon*_*sha 1

  1. 引导程序每 1 秒检查一次 WaWorkerHost 状态。
    您可以通过查看跟踪间隔在 bootsrapper 日志 (c:\resources\WaHostBootstrapper.txt) 中看到它:

“从客户端 WaWorkerHost.exe 获取状态”


  1. 您可以使用AzureTools,这是 Azure 支持团队使用的实用程序。

它的特点之一是优雅地回收角色实例:

在此输入图像描述

或者,您可以通过编程方式重新启动实例:

  • 将管理证书上传到您的订阅。
  • 使用以下代码以编程方式重新启动实例:

使用Microsoft Azure 计算管理库

X509Certificate2 cert = new X509Certificate2("");
var credentials = new CertificateCloudCredentials("your_subscription_id", cert);

using (var managementClient = new ComputeManagementClient(credentials))
{
    OperationStatusResponse response =
        await managementClient.Deployments.RebootRoleInstanceByDeploymentSlotAsync(
            "cloud_service_name",
            DeploymentSlot.Production, // or staging
            "instance_name");
}
Run Code Online (Sandbox Code Playgroud)
  1. 不建议这样做,原因有以下三个:

    1. 引导程序每秒检查一次,这对于大多数情况来说应该足够了。
    2. 这可能会导致奇怪的问题。比如你kill了worker,bootstrapper识别到worker宕机了,你手动启动worker,bootstrapper也尝试启动worker却失败(会崩溃?会进入僵尸状态?)。它可能会导致引导程序不健康,意味着没有任何东西可以处理工作进程。
    3. 当然,这取决于引导程序除了启动工作程序之外还做什么。但即使它目前除了启动该角色之外什么也不做,您也无法确定明天 Azure 团队是否会决定为其添加更多职责/操作。