据我了解,Azure Worker 角色是在名为 WaWorkerHost.exe 的主机应用程序的帮助下运行的,还有另一个名为 WaHostBootstrapper.exe 的应用程序,它检查 WaWorkerHost 是否.exe 正在运行,如果没有运行,它将运行 WaWorkerHost.exe。
- 这种“辅助角色状态检查”多久进行一次?
如何快速自己重启Worker角色?我可以重新启动正在运行的机器工作角色并等待几分钟,或者选择以下传统方法:
Taskkill/im/f WaWorkerHost.exe
然后等待几分钟,让WaHostBootstrapper.exe启动,但这非常低效且缓慢。 有没有任何(即时)方法可以重新启动辅助角色?
我可以运行类似以下内容并期望与 WaHostBootstapper.exe 类似的结果还是有其他考虑因素?
WaWorkerHost.exe {MyAzureWorkerRole.dll}
最佳答案
- Bootstrap 每 1 秒检查一次 WaWorkerHost 状态。
您可以通过查看跟踪间隔在 Bootstrap 日志 (c:\resources\WaHostBootstrapper.txt) 中查看它:
<
<小时/>"Getting status from client WaWorkerHost.exe"
- 您可以使用AzureTools这是 Azure 支持团队使用的实用程序。
它的功能之一是优雅地回收角色实例:
或者,您可以通过编程方式重新启动实例:
- 上传management certificate到您的订阅。
- 使用以下代码以编程方式重新启动实例:
使用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");
}
<小时/>
不建议这样做,原因有以下三个:
- Bootstrap 每秒检查一次,这对于大多数情况来说应该足够了。
- 这可能会导致奇怪的问题。比如你杀了worker,bootstrapper识别到worker挂掉了,你手动启动worker,bootstrapper也尝试启动worker却失败(会崩溃?会进入僵尸状态?)。它可能会导致 Bootstrap 不健康,意味着没有任何东西可以处理工作进程。
- 当然,这取决于 Bootstrap 除了启动工作线程之外还做什么。但即使它目前除了启动该角色之外什么也不做,您也无法确定明天 Azure 团队是否会决定为其添加更多职责/操作。
- Bootstrap 每秒检查一次,这对于大多数情况来说应该足够了。
关于c# - 手动重新启动 Azure Worker 角色 "WaWorkerHost.exe",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809270/