次の方法で共有


パフォーマンス カウンター ライブラリの値を手動で再構築する

この記事では、パフォーマンス カウンター ライブラリの値を手動で再構築する方法について説明します。

元の KB 番号: 300956

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 その後、問題が起こった場合は、レジストリを復元できます。 レジストリのバックアップと復元方法の詳細は、「Windows のレジストリのバックアップおよび復元の方法」を参照してください。

システム モニター ツールを使用すると、一部のカウンターが見つからないか、カウンター データが含まれていない可能性があります。 パフォーマンス カウンター ライブラリの基本セットが破損し、再構築が必要になる場合があります。 さらに、カスタム (作成された Microsoft .NET Framework アプリケーション) カウンターまたは拡張可能なカウンターを再構築する必要がある場合があります。

この動作は、次の状況で発生する可能性があります。

  • 特定の拡張可能なカウンターによってレジストリが破損します。
  • 一部の Windows Management Instrumentation (WMI) ベースのプログラムによってレジストリが変更されます。

基本パフォーマンス カウンターを再構築する

拡張可能なカウンター情報は、次の両方の場所に格納されます。

  • レジストリ サブキー: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib\009

  • %Systemroot%\System32\Perfc009.dat ファイルと%Systemroot%\System32\Perfh009.dat ファイル。

基本パフォーマンス カウンター ライブラリを手動で再構築するには、次の手順に従います。

  1. Perfc009.dat ファイルとPerfh009.dat ファイルを展開します。 これらのファイルは、Windows インストール ディスクにあります。PowerShell コマンドレットを使用するか、 Dism コマンドを使用して Windows インストール ディスク (.wim) ファイルをマウントした後、圧縮ファイルは DriveLetter:\i386\perfc009.da_DriveLetter:\i386\perfh009.da_にあります。 %Systemroot%\System32 フォルダー内のファイルを置き換えます。

  2. レジストリ エディターを起動し、レジストリで次のキーを見つけます。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib

  3. レジストリで、 Last Counter 値を 1846 (10 進数) に変更し、 Last Help の値を 1847 (10 進数) に変更します。

  4. 次のレジストリ キーを見つけて、 Performance サブキーを持つサービスを検索します。
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

  5. Performance サブキー (存在する場合) から次の値を削除します。

    • 最初のカウンター
    • 最初のヘルプ
    • 最後のカウンター
    • 最後のヘルプ

    Exctrlst.exe ツールを使用して、インストールされているパフォーマンス カウンターのダイナミック リンク ライブラリ ファイル (DLL) を見つけることもできます。 その後、レジストリにアクセスして DWORD 値を削除します。 これで、システム ベース カウンターのみを含む実行可能なパフォーマンス レジストリが作成されました。

    Note

    レジストリの Performance サブキーから値を削除すると、インストールされている .NET Framework アプリケーションが次回起動すると動作しなくなる可能性があります。 この場合は、lodctr /R コマンドを使用して、拡張可能なカウンターを追加パフォーマンス カウンターを再構築します。 .NET Framework アプリケーションの起動時に引き続き問題が発生する場合は、この記事の「 カスタム .NET Framework アセンブリ パフォーマンス カウンターをインストールする 」セクションを参照してください。

拡張可能なカウンターを再追加する

サービスの一覧から拡張カウンターをもう一度追加する必要があります。 これを行う前に、カウンターの読み込みに使用する.ini ファイルを特定する必要があります。

  1. コマンド プロンプト ウィンドウを開きます。

  2. コマンド プロンプトで、「 cd %Systemroot%\System32」と入力し、Enter キーを押します。

  3. コマンド プロンプトで、「 findstr drivername *.ini」と入力し、Enter キーを押します。

  4. 一覧の各ドライバー名の.ini ファイルの名前をメモします。

  5. コマンド プロンプトで、 lodctr <inifile> コマンドを入力し、Enter キーを押します。

    Note

    このコマンドでは、 <inifile> は、再読み込みするドライバーの.ini ファイルの名前を表します。

    たとえば、ASP ドライバーを再読み込みする場合は、手順 4 で書き込んだ一覧に、AXPERF.INIが ASP ドライバー (axperf.ini:drivername=ASP) の.ini ファイルであることが示されます。 ASP ドライバーを再読み込みするには、コマンド プロンプトで「 lodctr axperf.ini 」と入力し、Enter キーを押します。

  6. リスト内の各.ini ファイルに対して手順 5 を繰り返します。

  7. コンピューターを再起動します。

Windows Server の拡張可能なカウンターやサード パーティ製カウンターを含むすべてのパフォーマンス カウンターを再構築するには、コマンド プロンプトで次のコマンドを入力します。 各コマンドの後で Enter キーを押します。

cd \windows\system32
lodctr /R

Note

  • /R は大文字です。 このコマンドを正常に実行するには、コンピューターの管理者権限が必要です。
  • 32 ビット エディションの Windows を実行しているコンピューターでは、 Lodctr /R:<filename> コマンドは、ファイル名を使用してパフォーマンス カウンターのレジストリ文字列と情報を復元する標準的な方法です。

Windows Server では、英語のオペレーティング システムの C:\Windows\inf\009 フォルダー内のすべての.ini ファイルが読み取われるため、すべてのカウンターが再構築されます。

Note

  • クラスターまたはデータセンター製品を実行している場合は、ノードをフェールオーバーしてカウンター リストを更新する必要があります。 これを行うには、「 ベース カウンターと拡張可能カウンターの両方に対して 拡張可能カウンターを追加する」の手順を実行する必要があります。
  • Exchange や SQL Server など、独自のパフォーマンス カウンターを追加するアプリケーションを実行しているシステムでは、パフォーマンス カウンターの読み込みに使用される.ini ファイルが %Systemroot%\System32に配置されていない可能性があります。 これらの.iniファイルは、通常、アプリケーションフォルダー構造の下にあります。
  • 前の手順を使用したときにパフォーマンス ライブラリに関するエラー メッセージが表示される場合は、IIS パフォーマンス ダイナミック リンク ライブラリ (DLL) のアンロードと再読み込みが必要になることがあります。
  • .NET Framework アプリケーションの起動時に引き続き問題が発生する場合は、「 カスタム .NET Framework アセンブリ パフォーマンス カウンターをインストールする 」セクションを参照してください。

カスタム .NET Framework アセンブリ パフォーマンス カウンターを再インストールする

ここに記載されている手順を実行した後に .NET Framework アプリケーションを起動するときに問題が引き続き発生する場合は、カスタム .NET Framework アプリケーションのパフォーマンス カウンターを再構築する必要がある場合があります。 これを行うには、.NET Framework インストーラー ツール (Installutil.exe) の /i オプションを使用します。 パフォーマンス カウンターを作成する DLL ファイルのファイル名を知っている必要があります。

これらの手順に従って、Microsoft System Center Operations Manager 2007 がインストールされているシステムにインストールされているすべてのサービスのカウンターをレジストリから削除すると、管理サーバーが壊れている可能性があります。 Config Service、SDK Service、およびデータベース書き込みモジュールのカウンターは、INI ファイル内の拡張可能なカウンターの形式では提供されません。 代わりに、インストール時に登録されます。 そのため、System Center Operations Manager 2007 を起動しようとすると、パフォーマンス カウンターがないため、次の例のようなエラー メッセージが表示されることがあります。

Event Type: Error  
Event Source: OpsMgr SDK Service  
Event Category: None  
Event ID: 26380  
Date: date  
Time: time  
User: N/A  
Computer: MOM  
Description: The System Center Operations Manager SDK Service failed due to an unhandled exception.

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

Note

これらのコマンドを正常に実行するには、コンピューターの管理者権限が必要です。