使用未处理的Service Bus故障消息回收Azure辅助角色

时间:2013-10-29 21:20:14

标签: c# azure azureservicebus

我一直在运行Azure辅助角色部署,该部署使用Microsoft.ServiceBus 2.2库来响应从其他辅助角色和Web角色发布的作业。最近(可疑地讨论了操作系统更新时间here),群集的实例开始不断回收,重新启动,运行一小段时间,然后再次回收。

我可以确认角色实例从我在诊断中的跟踪消息中一直通过我的RoleEntryPoint的OnStart()方法。有时,Azure管理门户的“实例”窗格会提到回收角色遇到“未处理的异常”,但不会提供更多详细信息。使用远程桌面登录到其中一个实例后,我得到的两条线索是:

  1. 性能计数器指示\处理器(_Total)\%处理器时间悬停在100%,定期下降到80年代中期,与\ TCPv4 \ Connections Established中的下降同时发生。 \ TCPv4 \ Connections Established中的某些内容与\ Processor(_Total)\%Processor Time中的下降不相关。
  2. 我能够在其中一个实例的服务器管理器的本地服务器事件中找到以下消息:

    应用程序: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 *)

  3. 在此期间,没有与服务总线关联的权限配置更改,尽管我们没有更新任何VM,但仍会出现此消息。尽管如此,我们的服务似乎仍在运作=>正在处理作业并将其从正在收听的服务总线队列中删除。

    大多数关于这些问题的Google搜索都提出了这种与IntelliTrace有关的建议,但是,这些虚拟机没有启用IntelliTrace。

    有没有人对这里发生的事情有任何想法?

2 个答案:

答案 0 :(得分:0)

从崩溃的角度来看,服务总线异常被证明是一个红色的鲱鱼 - 在不同时间发布的两个不同VM角色之间发送的一个数据协定中的命名空间冲突。在其中一次接收重试期间抛出的异常中添加其他跟踪会显示它。关于它为什么起作用,以及回收的角色还没有停止,只是服务总线例外,仍然是一个谜。

答案 1 :(得分:0)

我有类似的问题。主要原因是它无法解决Service Bus DLL版本问题,请确保您在AppSettings中重定向的版本以及您实际添加的版本引用是相同的。 任何dll不匹配都可能发生,不仅与服务总线DLL ...