【发布时间】:2013-11-09 06:21:58
【问题描述】:
我一直在运行 Azure 辅助角色部署,它使用 Microsoft.ServiceBus 2.2 库来响应从其他辅助角色和 Web 角色发布的作业。最近(疑似在here讨论的操作系统更新时间前后),集群的实例开始不断回收,重启,运行一小段时间,然后再次回收。
我可以从诊断中的跟踪消息中确认角色实例一直通过我的 RoleEntryPoint 的 OnStart() 方法。有时,Azure 管理门户的“实例”窗格会提到回收角色遇到“未处理的异常”,但不会提供更多详细信息。使用远程桌面登录到其中一个实例后,我得到的两条线索是:
- 性能计数器表明 \Processor(_Total)\% Processor Time 徘徊在 100%,周期性地下降到 80 年代中期,同时 \TCPv4\Connections Establishment 下降。 \TCPv4\Connections established 中的一些下降与 \Processor(_Total)\% Processor Time 中的下降无关。
-
我能够在其中一个实例的服务器管理器的本地服务器事件中找到以下消息:
应用程序:WaWorkerHost.exe 框架版本:v4.0.30319 说明:进程因未处理的异常而终止。 异常信息:Microsoft.ServiceBus.Common.CallbackException 堆: 在 Microsoft.ServiceBus.Common.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32,UInt32,System.Threading.NativeOverlapped*) 在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
在此期间,没有与服务总线关联的权限配置更改,尽管我们没有更新任何虚拟机,但仍会出现此消息。尽管如此,我们的服务似乎仍在运行 => 正在处理作业并将其从它们正在侦听的服务总线队列中删除。
大多数关于这些问题的谷歌搜索结果表明这与 IntelliTrace 有某种关系,但是,这些虚拟机没有启用 IntelliTrace。
有人对这里发生的事情有任何想法吗?
【问题讨论】:
-
请提供您使用的服务总线库的版本。此外,是否有关于您使用服务总线库的尝试?有趣的是,一个未处理的异常已经完全爆发了。如果您在 Run 中捕获未处理的异常,它将导致重新启动。最后,您可能需要检查您的死信队列并查看有毒消息是否正在执行此操作。您看到的关于一连串失败的任何模式?
-
谢谢 => 更新问题 => 服务总线 2.2。我会看看死信队列,虽然我们没有明确配置任何死信队列行为。
-
糟糕,我选择了糟糕的措辞。我应该说,如果您在 Run 方法中获取未处理的异常,它将导致重新启动。您确实可以尝试捕获 Run 中的所有代码,对吗?另外,如果我记得正确的死信默认为 SB 队列启用,因为 MaxDeliveryCount 设置为 10 用于新队列,除非您更改它。
标签: c# azure azureservicebus