wcf - RestartManager 导致辅助角色重新启动

标签 wcf azure azure-worker-roles restartmanager

最近我们遇到了 Azure Worker Role 服务几乎每天都会重新启动的问题。这对我们来说是一个大问题,因为我们的服务需要大约 20 分钟来初始化,并且这些重新启动可能会导致停机。
我通过 RDP 登录到实例,并查看事件日志以找出导致这些看似随机重启的原因。我遇到了一些总是在重新启动之前的条目:

enter image description here

MsiInstaller 安装的服务是“Windows Azure Remote Forwarder”。我假设此服务已安装,因为我们在辅助角色配置中启用了远程桌面。有趣的是,我们已经启用 RDP 很长一段时间(大约 2 年),但随机重启是从 4 周前开始才发生的。
但有几件事我不太明白:

  1. 为什么该服务的安装或更新如此频繁?
  2. 我知道 RestartManager 负责安装/更新服务,而无需通过停止阻止文件的其他服务来重新启动计算机。
    我们的服务是否可能阻止某些重要文件?
    我们使用本地磁盘存储临时文件会不会有问题?
  3. 是否可以告诉 RestartManager 不理会我们的 Worker Role 服务?
  4. 这是否只是巧合,尽管没有日志表明我们这边有错误,但重启是由我们的服务以某种方式触发的?

非常感谢任何帮助。

谢谢,
卡斯滕

最佳答案

Self-Repair: What you are seeing is most likely Windows Installer self-repair. This is a mechanism to put files back in place if they have been unexpectedly modified, but this original purpose can trigger a lot of problems and make for endless loops of repair - and this is probably what has happened here. Very likely another product has been installed and an un-fixable error situation now exists that triggers continued and failed attempts to repair via MSI self-repair. The conflict situation must be identified with logging and event viewer debugging and a suitable fix has to be applied (real-world fixes).

Terse Explanation: Here is the most condensed explanation of what self-repair or "resilience" really is about that I have: Why does the MSI installer reconfigure if I delete a file?

重新启动管理器:Restart Manager feature是 - 正如您自己所说(其他人可能会读到) - 只是一种设置重新启动应用程序的方法,而不是通过“使应用程序能够自行关闭并以受控方式重新启动”来要求系统重新启动。。

  • 发生的情况可能是您的服务无法使用其 native 启动/停止过程及时关闭 - 或者 MSI 不会尝试使用内置 MSI 服务控制机制重新启动服务。 您的服务未能及时停止或未能完全停止。或许。我想这可能会触发重新启动管理器事件。当然,如果您将 REINSTALLMODE 设置为 "amus" - 强制覆盖所有文件,无论版本如何。
  • 由于这里的人都是开发人员,也许有一个有关如何在应用程序中实现重新启动管理器支持的技术示例:How do I add support for Windows Restart Manager to my application? (Advanced Installer)。
  • Lots of Restart Manager links and information (中页)

默认 MSI 日志记录:一个调试起点是 log all your MSI operations properly - 每当您安装、重新安装或修复时,临时目录中都会有一个日志文件(某些系统管理员并不总是可以接受)。您可以按照上述链接中的“全局适用于计算机上的所有设置”部分中的步骤为所有 MSI 安装启用日志记录。

<小时/>

详细的 self 修复:我之前写过很多关于意外 self 修复的文章。比任何人都想知道的多。这是一个非常愚蠢的问题,由于很少有人熟悉 Windows Installer 的操作,因此解决起来确实会造成非常昂贵的问题:

  1. Self-repair - explained
  2. Self-repair - finding real-world solutions
  3. Self-repair - how to avoid it in your own package
<小时/>

调试:上面的答案中提供了以下所有信息,但这里有一些快速提示:

  • 您可以使用以下方法确定触发修复的确切 MSI 组件:http://www.installsite.org/pages/en/msifaq/a/1037.htm .
  • 打开事件查看器并在“应用程序”中查找事件源“MsiInstaller”的警告: ID 10011004
  • 最近安装的另一个软件包可能会引发持续的错误情况,这种情况在修复过程中无法永久解决,您必须确定来源并以某种方式消除它。上面的第二项链接(此处重复:finding real-world solutions)。

待重启:这台计算机多久重新启动一次?许多机器都有大量未完成的待重启注册,因此可能会导致问题。有许多注册表位置可能涉及触发重新启动(警告)。 Get-PendingReboot-Query 。和a similar PowerShell script .

锁定问题:只想提一下 some applications locking resources in a very low-level way 的问题,例如防病毒恶意软件防护套件

关于wcf - RestartManager 导致辅助角色重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35152873/

相关文章:

wcf - 可靠的n层WCF(线程问题?)

performance - Azure Web 和辅助角色 - 2 个小型实例还是 1 个中型实例?

c# - 如何在本地机器上测试azure工作角色?

asp.net - Azure Web应用程序如何显示错误消息

WCF 服务网络TCPbinding

c# - WCF NetTcp 配置问题

javascript - 使用 JSON 作为 WCF Restservice 方法的参数

azure - 从守护程序应用程序调用 Azure 中的 ASP .NET Core API

azure devops 管道 CopyFiles@2 任务从代理 A 复制文件,但 DownloadBuildArtifacts@0 将文件下载到代理 B

c# - 如何以编程方式测试 SQL Server 是否支持 'AT TIME ZONE' ?