据我了解,Azure Worker 角色是在名为“Host”的应用程序的帮助下运行的WaWorkerHost.exe还有另一个应用程序称为WaHostBootstrapper.exe它检查是否WaWorkerHost.exe正在运行,如果没有,它将运行WaWorkerHost.exe.
- 这种“工作人员角色状态检查”多久发生一次?
-
如何自己快速重启Worker角色?我可以重新启动正在运行的机器工作角色并等待几分钟,或者选择以下传统方法:
Taskkill /im /f WaWorkerHost.exe
并等待几分钟WaHostBootstrapper.exe启动,但这非常低效且缓慢。
是否有任何(即时)方法可以重新启动辅助角色?
-
我可以运行类似下面的代码并期望得到与以下类似的结果吗WaHostBootstapper.exe还是有其他考虑?
WaWorkerHost.exe {MyAzureWorkerRole.dll}
- 引导程序每 1 秒检查一次 WaWorkerHost 状态。
您可以通过查看跟踪间隔在引导程序日志 (c:\resources\WaHostBootstrapper.txt) 中看到它:
“从客户端 WaWorkerHost.exe 获取状态”
- 您可以使用Azure工具 https://blogs.msdn.microsoft.com/kwill/2013/08/26/azuretools-the-diagnostic-utility-used-by-the-windows-azure-developer-support-team/这是 Azure 支持团队使用的实用程序。
它的特点之一是优雅地回收角色实例:
或者,您可以通过编程方式重新启动实例:
- Upload 管理证书 https://azure.microsoft.com/en-gb/documentation/articles/cloud-services-certs-create/#what-are-management-certificates到您的订阅。
- 使用以下代码以编程方式重新启动实例:
Using Microsoft Azure 计算管理库 https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.Compute/:
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");
}
-
不建议这样做,原因有以下三个:
- 引导程序每秒检查一次,这对于大多数情况来说应该足够了。
- 这可能会导致奇怪的问题。比如你kill了worker,bootstrapper识别到worker宕机了,你手动启动worker,bootstrapper也尝试启动worker却失败(会崩溃?会进入僵尸状态?)。它可能会导致引导程序不健康,意味着没有任何东西可以处理工作进程。
- 当然,这取决于引导程序除了启动工作程序之外还做什么。但即使它目前除了启动该角色之外什么也不做,您也无法确定明天 Azure 团队是否会决定为其添加更多职责/操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)