当 Azure 辅助角色停止时(由于未处理的异常或 Run() 完成),尚未传输的本地诊断信息会发生什么情况? Microsoft documentation表示诊断信息会按计划的时间间隔或按需传输到存储中,这两种方法都不能涵盖未处理的异常。这是否意味着在这种情况下诊断信息总是丢失?这看起来特别奇怪,因为故障转储是诊断数据的一部分(默认在 DiagnosticMonitorConfiguration.Directories 中设置)。那么如何才能恢复故障转储(与 this question 相关)?
对我来说,如果角色终止时诊断也被转移,这是合乎逻辑的,但这不是我的经验。
最佳答案
这取决于您所说的“角色停止”的含义。 SDK 1.3 及更高版本中的诊断监视器作为后台任务实现,不依赖于 RoleEntryPoint。因此,如果您的意思是您的 RoleEntryPoint 报告自身不健康或类似情况,那么您的 DiagnosticMonitor (DM) 仍将响应并根据您设置的配置发送数据。
但是,如果您的意思是角色停止是缩减操作(关闭虚拟机),那么不会,磁盘上的数据不会刷新。此时,VM 已关闭,DM 也随之关闭。任何尚未刷新(传输)的内容都可以被视为丢失。
如果您只是重新启动虚拟机,那么理论上您将连接回保存缓冲诊断数据的同一资源 VHD,这样您就不会丢失它,它将在下一个请求时进行传输。我很确定它启用了粘性存储,因此它不会在重新启动时被清除。
HTH。
关于azure - 当角色停止时,Azure 诊断信息会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739950/