一段时间以来,我们一直在使用 Microsoft 的 Service Broker External Activator Service 来处理 Service Broker 队列的外部激活,没有问题。但是在上周,一个错误不断发生,我无法追根究底。
每天至少一次,随机时间,服务会遇到错误并陷入停止状态。此时所能做的就是终止进程并重新启动服务。检查 EATrace.log 文件显示以下错误:
18/07/2018 09:59:45 EXCEPTION
ERROR = 90, Internal exceptions have occurred when External Activator is runtime checkpointing.
18/07/2018 09:59:45 EXCEPTIONDETAILS Inner Exception:
18/07/2018 09:59:45 EXCEPTIONDETAILS System.IO.IOException: Cannot create a file when that file already exists.
18/07/2018 09:59:45 EXCEPTIONDETAILS
18/07/2018 09:59:45 EXCEPTIONDETAILS at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
18/07/2018 09:59:45 EXCEPTIONDETAILS at System.IO.File.Move(String sourceFileName, String destFileName)
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.LogManager.SaveRecoveryContext(LogRecoveryContext recoveryContext)
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.LogManager.Checkpoint(LogRecoveryContext recoveryContext)
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.LogManager.Log(LogRecord recoveryLogRec)
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.ApplicationMonitor.OnProcessExited(ProcessMonitor processMonitor)
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.ProcessMonitor.NotifySubscriber()
18/07/2018 09:59:45 EXCEPTIONDETAILS at ExternalActivator.ProcessMonitor.OnProcessExited(Object a, EventArgs b)
请注意,LogFileName 是 EARecovery.rlog,TempLogFileName 是 EARecovery_temp.rlog。发生错误后检查日志文件夹时,只有临时文件,原始文件已按预期删除。
我本来希望 lock 语句可以防止这种情况发生。
除了通常的 Windows 更新之外,服务器上没有任何变化,负载也没有增加,但由于某种原因,这个错误从 7 月 16 日左右开始发生。打开详细日志记录,我可以看到它的检查点比我预期的要多得多,并且当错误发生时,它总是在前一个检查点的一两秒内。
任何关于下一步该看哪里的帮助或指示都将不胜感激,因为我正在把我的头发扯下来。
皈依舞
相关分类