3

我需要测试我的代码将如何处理开发环境中 Web 角色实例的故障。

如何终止其中一个实例?我在 UI 中看不到任何选项。似乎是一个奇怪的遗漏

更新

问题与分布式缓存层有关(我知道 azure 提供自己的)我希望能够测试系统如何对丢失或附加节点等做出反应

Prehaps我真正的问题是

RoleEnvironment.CurrentRoleInstance.Role.Instances 的最新程度如何

4

3 回答 3

3

通常需要在开发模拟器中模拟不正常的退出,因为您在 Web 角色中正在做一些有状态或长期运行的事情。这通常是不鼓励的,但有时是不可避免的。

我怀疑模拟失败的最佳方法是终止进程。如果您打开任务管理器(或更好的 Process Explorer),您将看到“WatDebugger”托管“WaIISHost”或“WaWorkerHost”。如果你杀死这个进程,我认为它会模拟失败。

老实说,在云中测试这个更容易。您可以 RDP 进入其中一个实例并终止“WaAppAgent”进程。这将杀死您的 RoleEntryPoint 和结构控制器代理。那将是一个真正不优雅的失败。

于 2011-07-11T14:35:02.090 回答
0

通过终止一个实例,您的意思是减少实例数并查看哪个实例被杀死?我喜欢瑞恩关于不优雅退出的观点,但如果它被面料强行杀死,那将是一场不同的球赛。

于 2011-07-11T21:06:05.907 回答
0

失败是指变得不可用吗?它应该是无缝的,因为下一个请求将简单地由其他实例之一处理。只要有一个可用的实例,Azure 就会将调用路由到该实例。

这是高可用系统的本质,请求由可用实例处理。这就是为什么您首先有多个实例,以便在一个或多个实例失败的情况下处理请求。

这就是为什么您需要始终注意应用程序如何处理状态的原因。状态需要在实例之外维护,无论是在队列中还是在数据库中。这确保了任何进程都可以拾取一项工作并对其执行。

处理会话状态的另一个问题应该会有所帮助:Microsoft Azure 如何处理会话状态?

于 2011-07-11T14:11:39.230 回答