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

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

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

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

    应用程序:WaWorkerHost.exe Framework版本:v4.0.30319描述:由于未处理的exception,进程已终止。 exception信息:Microsoft.ServiceBus.Common.CallbackException Stack:at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32,UInt32,System)中的Microsoft.ServiceBus.Common.Fx + IOCompletionThunk.UnhandledExceptionFrame(UInt32,UInt32,System.Threading.NativeOverlapped *) .Threading.NativeOverlapped *)

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

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

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

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

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