本文介绍 Windows Server 2012 R2、Windows Server 2016 和 Windows Server 2019 中的新的 WMI 仲裁行为。
原始 KB 数: 4096063
总结
本文介绍在 2018 年 3 月 20 日 Windows Server 2016 和 Windows Server 2012 R2 累积更新中引入的 Windows Management Instrumentation(WMI)仲裁行为。
详细信息
仲裁是实现以下功能的重要 WMI 组件:
- 存储客户端提交的查询的详细信息。 详细信息包括查询文本、提交时间、用户名、客户端 PID 和内存使用情况。
- 计划运行查询的任务。
- 存储提供程序在等待客户端检索结果时返回的结果。
- 当使用的内存总量达到阈值 256 MB 时,会限制查询执行。
有关详细信息,请参阅 Windows Server 2012 R2 和 Windows Server 2016 累积更新的更新历史记录。
在实现新功能之前,如果客户端未检索结果,则使用大量内存的查询可能会导致 WMI 中的死锁条件。 在这种情况下,如果有问题的查询导致总内存使用量达到 256 MB 的阈值,则在内存压力降低之前,所有其他查询都会受到限制(未执行)。 但是,如果客户端无法检索数据,则在 WMI 或计算机重启之前,无法解析此条件。
此更改实现一种机制,用于取消使用大量内存的 WMI 请求(如果检测到客户端长时间未处于活动状态),或者达到仲裁的内存阈值。
方案
以下是两种可能的方案:
-
检测到客户端空闲的时间超过注册表值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem\CIMOM\ArbTaskMaxIdle中指定的时间。 默认值为 1200000 毫秒(20 分钟)。取消任务后,WMI-Activity/Operational 日志中记录了事件 ID 5858,原因可能是“限制空闲任务,请参阅 CIMOM regkey:ArbTaskMaxIdle”。
-
缓冲缓冲区中的累积内存使用量达到 256 MB 阈值。
WMI 服务将启动清除过程,以取消在 Winmgmt 中保存内存的查询、枚举或 ESS 任务/请求。 发生此清理时,WMI-Activity/Operational 日志中记录了事件 ID 5858,并可能导致“限制空闲/堆栈任务达到最大内存配额”。
数据收集
如果需要Microsoft支持方面的帮助,建议按照使用 TSS 收集信息中的 步骤收集用户体验问题来收集信息。