如何手动重新生成性能计数器库值

文章翻译 文章翻译
文章编号: 300956 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍如何手动重新生成性能计数器库值。

更多信息

重要说明 本部分(或称方法或任务)包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表
当您使用系统监视器工具时,有些计数器可能丢失,或者其中未包含计数器数据。基本的性能计数器库集可能被损坏,并且可能需要重新生成。此外,您可能需要重新生成所有自定义(.NET Framework 应用程序创建的)计数器或任何可扩展的计数器。

如果某些可扩展计数器损坏了注册表,或者某些基于 Windows Management Instrumentation (WMI) 的程序修改了注册表,就可能会发生此问题。

重新生成基本性能计数器

可扩展计数器信息存储在以下两个位置中:
  • 以下注册表子项:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Perflib\009
  • %Systemroot%\System32\Perfc009.dat 文件和 %Systemroot%\System32\Perfh009.dat 文件
若要手动重新生成基本的性能计数器库,请执行以下操作:
  1. 展开“Perfc009.dat”文件和“Perfh009.dat”文件。这些文件位于 Windows 安装光盘中。压缩文件位于 DriveLetter:\i386\perfc009.da_ 和 DriveLetter:\i386\perfh009.da_。替换 %Systemroot%\System32 文件夹中的文件。
  2. 启动注册表编辑器,然后在注册表中查找以下项:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib
  3. 在注册表中,将“Last Counter”值更改为 1846(十进制),并将“Last Help” 值更改为 1847(十进制)。
  4. 查找以下注册表项,以搜索具有 Performancesubkey 的服务:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
  5. 从 Performance 子项(如果存在)删除以下值:
    • First Counter
    • First Help
    • Last Counter
    • Last Help
    您还可以使用 Exctrlst.exe 工具来查找安装的性能计数器动态链接库文件 (DLL),然后访问注册表以删除 DWORD 值。现在您拥有了只包含系统基计数器的可以正常使用的性能注册表。

    注意 在注册表编辑器中从 Performance 子项删除值可能导致已安装的 .NET Framework 应用程序在下次启动时无法正常工作。如果发生这种情况,请使用“重新添加可扩展计数器”部分中的 lodctr /R 命令来重新生成性能计数器。如果您在启动 .NET Framework 应用程序时仍遇到问题,请参阅本文章中的“重新安装所有自定义 .NET Framework 程序集性能计数器”部分。

重新添加可扩展计数器

您必须从服务列表中重新添加可扩展计数器。在执行此操作之前,您必须标识用来加载计数器的 .ini 文件:
  1. 打开一个命令提示符窗口。
  2. 在命令提示符处,键入 cd %Systemroot%\System32,然后按 Enter。
  3. 在命令提示符处,键入 findstr drivername *.ini,然后按 Enter。
  4. 注意列表中每个驱动程序名称所对应的 .ini 文件名。
  5. 在命令提示符后,键入以下命令,然后按 Enter:
    lodctr <inifile>
    注意:在此命令中,<inifile> 表示要重新加载的驱动程序的 .ini 文件的名称。
    例如,如果希望重新加载 ASP 驱动程序,则在步骤 4 中提到的列表将显示 Axperf.ini 是 ASP 驱动程序的 .ini 文件 (axperf.ini:drivername=ASP)。因此,要重新加载 ASP 驱动程序,请在命令提示符处键入 lodctr axperf.ini,然后按 Enter。
  6. 为列表中的所有 .ini 文件重复第 5 步。
  7. 重新启动计算机。
若要在 Windows Server 2003 中重新生成所有性能计数器(包括可扩展和第三方计数器),请在命令提示符后键入以下命令。在每条命令后按 Enter。
cd\windows\system32
lodctr /R
注意
  • /R 是大写字符。您必须在该计算机上拥有管理权限才能成功执行此命令。
  • 在运行 32 位 Windows XP 版本的计算机上,Lodctr /R:<filename> 命令是使用文件名还原性能计数器注册表字符串和信息的标准方法。
Windows Server 2003 重新生成了所有的计数器,因为它读取了英文操作系统的 C:\Windows\inf\009 文件夹中所有的 .ini 文件。

注意
  • 如果您正在运行群集或数据中心产品,则必须故障转移节点以刷新计数器列表。此操作必须在对基本计数器和可扩展计数器执行“重新添加可扩展计数器”下面的步骤后执行。
  • 在运行添加其自身的性能计数器的应用程序的系统上,例如在 Microsoft Exchange 或 SQL Server 上,用于加载性能计数器的 .ini 文件可能不在 %systemroot\system32 中。通常可以在应用程序文件夹结构下找到这些 .ini 文件。
  • 在使用上述步骤时,如果收到有关性能库的错误消息,则可能必须卸载并重新加载 IIS 性能动态链接库 (DLL)。 有关具体操作方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    267831 加载性能计数器时记录事件 ID 2003 警告消息
  • 如果启动 .NET Framework 应用程序时仍遇到问题,请参阅“重新安装所有自定义 .NET Framework 程序集性能计数器”部分。

重新安装所有自定义 .NET Framework 程序集性能计数器

如果执行此处列出的步骤后,启动 .NET Framework 应用程序时仍然遇到问题,则可能需要为自定义 .NET Framework 应用程序重新生成性能计数器。为此,请在 .NET Framework 安装工具 (Installutil.exe) 中使用“/i”选项。您必须知道创建性能计数器的 DLL 文件名称。

示例

如果在安装了 Microsoft System Center Operations Manager 2007 的系统上,按这些步骤从注册表中删除了所有已安装服务的计数器,则可能会损坏了管理服务器。这是因为配置服务、SDK 服务和数据库写入模块不是在 INI 文件中以可扩展计数器的形式提供的。这些计数器是在安装时进行注册的。因此,尝试启动 System Center Operations Manager 2007 时,可能会由于性能计数器丢失而收到与以下内容类似的错误消息:

事件类型:错误
事件源:OpsMgr SDK 服务
事件类别:无
事件 ID: 26380
日期:Date
时间:Time
用户:N/A
计算机:MOM
描述:System Center Operations Manager SDK 服务由于未处理的异常而失败。

若要解决 System Center Operations Manager 2007 中的此问题,必须重新安装创建该性能计数器的 .NET Framework 组件。为此,请在 .NET Framework 安装工具 (Installutil.exe) 中使用 /i 选项来重新安装下列组件:
  • Microsoft.Mom.ConfigService.dll
  • Microsoft.Mom.Sdk.ServiceDataLayer.dll
  • Microsoft.Mom.DatabaseWriteModules.dll
  • Microsoft.EnterpriseManagement.HealthService.Modules.DataWarehouse.dll
例如,在命令提示符处,键入以下命令,并在每一命令后按 Enter:
InstallUtil /i Microsoft.Mom.ConfigService.dll

InstallUtil /i Microsoft.Mom.Sdk.ServiceDataLayer.dll

InstallUtil /i Microsoft.Mom.DatabaseWriteModules.dll

InstallUtil /i Microsoft.EnterpriseManagement.HealthService.Modules.DataWarehouse.dll
注意您必须拥有计算机上的管理员权限才能成功地执行这些命令。

属性

文章编号: 300956 - 最后修改: 2013年9月4日 - 修订: 10.0
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Microsoft Windows XP Professional x64 Edition
  • Windows 7 Enterprise
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Professional
  • Windows 7 Starter
  • Windows 7 Ultimate
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Foundation
  • Windows Server 2008 R2 Standard
关键字:?
kbenv kbhowto KB300956
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