基于组件的服务 (CBS) 影响 Windows Server 2016 中的关机持续时间

基于组件的服务 (CBS) 影响 Windows Server 2016 中的关机持续时间

我在 Windows Server 2016 + APC Smart UPS + NUT 上测试了电源故障时的 UPS 关闭情况。

一会儿,NUT 向 Windows 发送了关机命令。但我没有看到真正的关机,而是看到屏幕上显示“准备好你的服务器“或类似的东西,我不记得具体了。屏幕看起来像是在关机过程中安装一些更新。但服务器已配置为手动的更新。我在此之前的几个小时已经检查并安装了所有更新。

关机过程需要 20-25 分钟才能完成。幸运的是,UPS 没有关闭电源(由于某些配置错误)。但在实际情况下,如果配置正确,UPS 会在关机命令发出后 3 分钟内从服务器切断交流电源。

后来我查看了日志,发现 CBS(基于组件的服务)在关机前几分钟就开始了一些维护任务。所以 Windows 等待它完成。

大致时间:

15:36:55 shutdown command with 30 sec delay (shutdown.exe /f /s /t 30)
15:37:25 user logoff
about 15:55 shutdown has completed

来自CBS.log:

2019-05-08 15:34:59, Info                  CBS    Maint: begin deep clean
...
...
2019-05-08 15:37:26, Info                  CBS    Trusted Installer signaled for shutdown, going to exit.
2019-05-08 15:37:26, Info                  CBS    A system shutdown was initiated while idle scavenging was running
2019-05-08 15:37:26, Info                  CBS    Shtd: Prepare for shutdown processing.
2019-05-08 15:37:26, Info                  CBS    Plan: Package: Package_for_RollupFix~31bf3856ad364e35~amd64~~14393.2273.1.4, Update: 4103720-19196_neutral_PACKAGE, current: Absent, pending: Default, start: Absent, applicable: Absent, targeted: Absent, limit: Absent, selected: Default
2019-05-08 15:37:26, Info                  CBS    SetProgressMessage: progressMessageStage: 0, ExecuteState: ExecuteStateNone, SubStage: 0
2019-05-08 15:37:26, Info                  CBS    Shtd: PreshutdownTimeout: 3600000ms, BlockTimeIncrement: 900000ms
2019-05-08 15:37:26, Info                  CBS    Shtd: progress thread started

在我看来,任何进程都可能影响关机,这似乎是一个问题。尤其是当服务器必须尽快关闭时。

问题:

  1. 这是 WinServer2016 独有的行为吗?WinServer2012R2 又如何呢?
  2. 是否可以进行强制但正确的关机来覆盖这些繁忙的进程?

相关内容