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天后完成
针对当前情况的建议
不要强行终止进程:从你的CBS.log更新来看,进程并没有真的卡住,只是每个旧更新包的清理验证耗时极长。如果日志持续有新条目生成(比如每3小时左右出现新的
Package_for_RollupFix相关记录),就说明进程在正常推进,强行终止TiWorker大概率会导致系统不稳定,甚至无法启动,千万不要冒这个风险。临时优化资源配置:虽然当前内存足够,但TiWorker只用到1个CPU核心。如果你的虚拟化平台允许,可以尝试临时给服务器增加1-2个CPU核心,不用重启机器,直接调整配置即可,这可能会加快每个KB包的处理速度,缩短整体耗时。
做好备份预案:鉴于之前的崩溃经历,建议在清理过程中每天做一次增量备份,确保即使出现意外,也能快速恢复到最近的健康状态。
事后预防措施:等这次清理完成后,建议你:
- 定期执行
Dism /AnalyzeComponentstore,不要等组件存储涨到15GB才处理,当提示有较多可回收空间时就及时清理 - 开启Windows Update的自动维护功能,让系统定期自动清理组件存储,避免堆积过多旧更新包
- 如果你的服务器不需要回滚已安装的更新,可以尝试使用
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase命令——这个命令会彻底清除所有更新的卸载信息,虽然无法再卸载更新,但能极大压缩组件存储的大小,减少后续清理的负担
- 定期执行
备注:内容来源于stack exchange,提问作者xMRi




