我需要测试我的代码如何处理开发环境中Web角色实例的失败。
如何终止其中一个实例?我在UI中看不到任何选项。看起来像一个奇怪的遗漏
问题与分布式缓存层有关(我知道azure提供了自己的) 我希望能够测试系统如何对丢失或额外的节点等做出反应
或许我真正的问题是
最新动态是RoleEnvironment.CurrentRoleInstance.Role.Instances
答案 0 :(得分:3)
通常需要在开发模拟器中模拟不合适的出口,因为您在Web角色中执行有状态或长时间运行的操作。这通常是气馁的,但有时是不可避免的。
我怀疑模拟失败的最佳方法是杀死进程。如果您打开任务管理器(或更好的Process Explorer),您将看到托管“WaIISHost”或“WaWorkerHost”的“WatDebugger”。如果你杀了这个过程,我认为它会模拟失败。
老实说,在云端测试这个更容易。您可以将RDP插入其中一个实例并终止“WaAppAgent”进程。这将终止您的RoleEntryPoint和结构控制器代理。那将是一次真正的失败。
答案 1 :(得分:0)
失败,你的意思是变得不可用吗?它应该是无缝的,因为下一个请求只是由其他一个实例处理。只要有一个可用实例,Azure就会将呼叫路由到该实例。
这是高可用系统的本质,请求由可用实例处理。这就是为什么你首先有多个实例,以便在一个或多个实例中出现故障时处理请求。
这就是为什么您需要始终关注应用程序处理状态的方式。状态需要在队列或数据库中的实例外维护。这可以确保任何进程都可以获取一项工作并对其执行。
还有另一个问题涉及会话状态应该有所帮助:How does Microsoft Azure handle Session State?
答案 2 :(得分:0)
通过终止实例,你的意思是减少实例数,看看哪一个被杀?我喜欢Ryan关于不合适出口的观点,但如果它被织物强行杀死,那将是一场不同的球赛。