You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows Server 2016中Dism.exe /online /Cleanup-Image /StartComponentCleanup命令长时间执行卡住的解决方案求助

Windows Server 2016中Dism.exe /online /Cleanup-Image /StartComponentCleanup命令长时间执行卡住的解决方案求助

根据你描述的情况,我先梳理下你的核心问题和后续进展,再给出一些实用的参考建议:

你的问题与进展回顾

  • 你在Windows Server 2016上执行命令 Dism.exe /online /Cleanup-Image /StartComponentCleanup,进程已经运行超过48小时,卡在10%,由TiWorker.exe负责执行;之前有过终止TiWorker导致服务器无法启动、只能从备份恢复的惨痛经历
  • 前置准备工作:已成功执行sfc /scannow无报错,系统已安装最新更新,机器刚重启过;Dism /AnalyzeComponentstore显示组件存储占用15GB,提示需要清理
  • 系统状态:虚拟服务器,TiWorker持续占用1个CPU,当前内存已用6.8GB(剩余可用10GB,资源充足),网络稳定;CBS.log持续增长(最终到400MB左右)
  • 后续进展:
    • 4天后发现CBS.log中每个KB修复包都在被逐一检查验证,每个KB耗时约1.5小时,当时还有35个KB待处理
    • 7天后进程到70.7%,每个KB处理耗时增加到3小时,剩余75个待处理
    • 最终该操作在运行12天后完成

针对当前情况的建议

  1. 不要强行终止进程:从你的CBS.log更新来看,进程并没有真的卡住,只是每个旧更新包的清理验证耗时极长。如果日志持续有新条目生成(比如每3小时左右出现新的Package_for_RollupFix相关记录),就说明进程在正常推进,强行终止TiWorker大概率会导致系统不稳定,甚至无法启动,千万不要冒这个风险。

  2. 临时优化资源配置:虽然当前内存足够,但TiWorker只用到1个CPU核心。如果你的虚拟化平台允许,可以尝试临时给服务器增加1-2个CPU核心,不用重启机器,直接调整配置即可,这可能会加快每个KB包的处理速度,缩短整体耗时。

  3. 做好备份预案:鉴于之前的崩溃经历,建议在清理过程中每天做一次增量备份,确保即使出现意外,也能快速恢复到最近的健康状态。

  4. 事后预防措施:等这次清理完成后,建议你:

    • 定期执行Dism /AnalyzeComponentstore,不要等组件存储涨到15GB才处理,当提示有较多可回收空间时就及时清理
    • 开启Windows Update的自动维护功能,让系统定期自动清理组件存储,避免堆积过多旧更新包
    • 如果你的服务器不需要回滚已安装的更新,可以尝试使用Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase命令——这个命令会彻底清除所有更新的卸载信息,虽然无法再卸载更新,但能极大压缩组件存储的大小,减少后续清理的负担

备注:内容来源于stack exchange,提问作者xMRi

火山引擎 最新活动