如何排查基于 WinMgmt 的性能计数器错误

文章翻译 文章翻译
文章编号: 266416 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Description of the Microsoft Windows Registry
展开全部 | 关闭全部

症状

当在计算机上查看应用程序事件查看器日志时,可能会看到记录了下面一个或多个事件:
Event Type:Error
Event Source:WinMgmt
Event Category:None
Event ID:37
Description:WMI ADAP was unable to load the file name performance library due to an unknown problem within the library:0x0
- 或 -
Event Type: Error
Event Source: WinMgmt
Event Category: None
Event ID: 41
Description:ADAP was unable to process the file name performance library due to a time violation in the collect function
- 或 -
Event Type: Error
Event Source: WinMgmt
Event Category: None
Event ID: 61
Description:WMI ADAP was unable to process the file name performance library due to a time violation in the open function

原因

出现此行为可能是因为计数器中有问题,或者是因为 Windows 管理规范 (WMI) 性能库筛选器中返回了一个假的正值。如果 WMI 性能库筛选器中返回了一个假的正值,在某些情形下,即使计数器工作正常,此筛选器也可能会错误地判定某个库是无效的。

替代方法

警告:“注册表编辑器”使用不当可造成严重问题,以至需要重新安装操作系统。Microsoft 无法保证您能够解决因为“注册表编辑器”使用不当而产生的问题。使用“注册表编辑器”需要您自担风险。

请尝试使用以下命令再次筛选计算机的性能库:
winmgmt /clearadap
此命令可从服务的性能注册表项中清除所有与 WMI 相关的数值。
winmgmt /resyncperf "winmgmt service pid"
此命令可用于向 WMI 注册计算机的性能库。

您可以在“Windows 任务管理器”中的进程选项卡上找到 WMI 服务 PID 信息。

涉及的服务的性能注册表项包括以下注册表项:
WbemAdapFileSize
WbemAdapFileTime
WbemAdapStatus
备注:如想了解 WMI 的可用命令选项方面的更多信息,请在命令提示符下键入 winmgmt/?

导致此事件的另一个原因可能是,在启动期间,计数器由于其他活动而不能及时响应。您可以通过向适当的注册表位置添加 Collect Timeout REG_DWORD 10000 值来调整此超时值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\[counterfile]\Performance
其中 [counterfile] 是事件查看器的错误消息中列出的文件名 性能库。

例如,如果事件查看器中的消息是
WMI ADAP was unable to process the perfproc.dll performance library due to a time violation in the open function
那么注册表项将是:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\PerfProc\Performance
请注意此注册表路径不包括文件扩展名 (.dll)。 如果做出这些更改之后仍继续记录这些事件,则请在该服务的性能注册表项下,手动将 WbemAdapStatus 的值更改为 REG_DWORD 0,然后在下面的注册表项中将 ADAPPerflibTimeout 的值增加到 REG_DWORD 180:
HKEY_LOCAL_MACHINE\Software\Microsoft\Wbem\CIMOM
备注:对注册表的所有更改都必须以十进制数值的形式输入。

另外,您也可以使用 Windows 2000 Resource Kit 中的 Exctrlst.exe 工具禁用特定服务的性能计数器。此工具通过添加类似于以下示例的注册表项来禁用特定的计数器。如果 Exctrlst.exe 不可用或不适用,您可以手动在特定计数器项下添加这些注册表项。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Spooler\Performance

数值名称:Disable Performance Counters
数值类型:REG_DWORD
数值数据: 1
备注:如要使用这些命令,请单击开始运行,然后键入 cmd 以进入命令行状态。

更多信息

AutoDiscovery/AutoPurge (ADAP) 进程负责收集和维护 WMI 中的已在计算机上注册的性能计数器对象。

当启动 WinMgmt 服务或当您使用 Lodctr 或 Unlodctr 工具安装或卸载包含性能计数器的性能库时,ADAP 进程将启动。

虽然记录了事件,但计数器仍可用。

属性

文章编号: 266416 - 最后修改: 2003年10月23日 - 修订: 1.3
这篇文章中的信息适用于:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Professional Edition
关键字:?
kbprb KB266416
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com