c# - 手动重新启动 Azure Worker 角色 "WaWorkerHost.exe"

标签 c# azure azure-worker-roles

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

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

    Taskkill/im/f WaWorkerHost.exe

    然后等待几分钟,让WaHostBootstrapper.exe启动,但这非常低效且缓慢。 有没有任何(即时)方法可以重新启动辅助角色?

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

    WaWorkerHost.exe {MyAzureWorkerRole.dll}

最佳答案

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

"Getting status from client WaWorkerHost.exe"

<小时/>
  • 您可以使用AzureTools这是 Azure 支持团队使用的实用程序。
  • 它的功能之一是优雅地回收角色实例:

    enter image description here

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

    使用Microsoft Azure Compute Management library :

    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");
    }
    
    <小时/>
  • 不建议这样做,原因有以下三个:

    1. Bootstrap 每秒检查一次,这对于大多数情况来说应该足够了。
    2. 这可能会导致奇怪的问题。比如你杀了worker,bootstrapper识别到worker挂掉了,你手动启动worker,bootstrapper也尝试启动worker却失败(会崩溃?会进入僵尸状态?)。它可能会导致 Bootstrap 不健康,意味着没有任何东西可以处理工作进程。
    3. 当然,这取决于 Bootstrap 除了启动工作线程之外还做什么。但即使它目前除了启动该角色之外什么也不做,您也无法确定明天 Azure 团队是否会决定为其添加更多职责/操作。
  • 关于c# - 手动重新启动 Azure Worker 角色 "WaWorkerHost.exe",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809270/

    相关文章:

    c# - 转换 yyyy-mm-ddThh :mm:ssz to date time - hour comes back incorrect

    c# - 如何使用子绑定(bind)中的父内容控件?

    c# - 在 Autofac 中,RegisterAssemblyOpenGenericTypes 和 RegisterAssemblyTypes 与 AsClosedTypesOf 之间有什么区别?

    azure - 使用 Azure 功能的命令需要哪些 Azure 角色/权限

    azure - 如何将辅助角色添加到虚拟网络

    c# - 在 Web API 中返回特殊的 ASCII 字符

    Azure 移动服务 - 我们所有应用程序的自定义身份验证提供商

    azure - 移动或重命名时可以保留 Blob 版本吗?

    entity-framework - 连接到 sql azure 的辅助角色随机错误

    azure - 每个 Azure 实例可以拥有多少个角色