我希望尽可能使Windows Azure应用程序具有防错功能,并且我需要能够有意识地使角色崩溃,以测试整个应用程序如何从此类崩溃中恢复。
我想我可以将代码直接插入角色,获取随机数并决定以相当低的概率崩溃。真正的问题是
if( isTimeToCrash() ) {
//what exactly do I do here?
}
一旦我确定是时候,如何崩溃角色。
如何有意识地崩溃Azure角色?
答案 0 :(得分:3)
您可以RDP进入计算机或使用启动任务添加定期任务,该任务将定期终止“WaAppAgent”进程。 Powershell在这里找到并杀死这个过程非常好。你需要成为一名管理员才能做到这一点。这将切断与结构控制器的通信一段时间,直到它恢复并重新启动进程。 IIRC,它还会终止你的RoleEntryPoint代码(在WaWebHost或WaWorkerHost下运行)。这将模拟一个非常大的失败。
如果您想真正想要的话,请运行一个侦听队列的后台启动任务,并在看到队列消息时按需终止该进程。注意,你不会把这个代码放在RoleEntryPoint中,它需要是一个以“后台”运行的启动任务,否则你也会杀死崩溃角色的进程。
答案 1 :(得分:1)
我不确定崩溃角色,但使用角色管理API,您可以reboot a role。您可以查看此sample
答案 2 :(得分:1)
对于辅助角色,您可以从Run()中抛出异常并让它无法处理。但是,我不知道这是否符合您的资格“崩溃” - 角色将被优雅地回收。
我们的角色倾向于通过IIS捕获未处理的异常,因此dunnry的建议可能会让您更接近您正在寻找的ASOD(Azure死亡屏幕)。