この記事は、 WmiPrvse.exe プロセス クォータ超過の問題のトラブルシューティングに役立ちます。
次の 1 つ以上の問題が発生する可能性があります。
1 つ以上のアプリケーションで、Windows Management Instrumentation (WMI) プロバイダーのエラーに関連するエラー コードまたはメッセージが、 WMI エラー定数に記載されています。
WmiPrvse.exe プロセスは、定期的または断続的に特定のメモリ、ハンドル、またはスレッドに到達し、最終的に終了または終了します。
次のイベントは、アプリケーション イベント ログに定期的または断続的に記録されます。
Note
2 つのイベント例を次に示します。 イベントの説明は、 WmiPrvse.exe プロセスと関連する WMI プロバイダーが直面する問題に応じて変更される可能性があります。
Log Name: Application Source: Microsoft-Windows-WMI Date: <DateTime> Event ID: 5612 Task Category: None Level: Warning Keywords: User: NETWORK SERVICE Computer: <MachineName> Description: Windows Management Instrumentation has stopped WMIPRVSE.EXE because a quota reached a warning value. Quota: PrivatePageCount Value: 538353664 Maximum value: 536870912 WMIPRVSE PID: 18524 Providers hosted in this process: %systemroot%\system32\wbem\ntevt.dll, %SystemRoot%\System32\wbem\cluswmi.dll, %SystemRoot%\System32\wbem\cluswmi.dll, %systemroot%\system32\wbem\cimwin32.dll
Log Name: Application Source: Microsoft-Windows-WMI Date: <DateTime> Event ID: 5612 Task Category: None Level: Warning Keywords: User: SYSTEM Computer: <MachineName> Description: Windows Management Instrumentation has stopped WMIPRVSE.EXE because a quota reached a warning value. Quota: HandleCount Value: 4099 Maximum value: 4096 WMIPRVSE PID: 4468 Providers hosted in this process: C:\Windows\System32\wbem\WmiPerfClass.dll, %systemroot%\system32\wbem\wmiprov.dll
上記の 1 つ以上の問題 (特にイベント ID 5612) が発生した場合は、WMI プロバイダー プロセス (WmiPrvse.exe) の 1 つが定義済みのリソース値を超え、WMI サービスによってプロセスとしての実行が明示的に停止されたことを意味します。
停止した WmiPrvse.exe プロセスによって処理されたクエリと、プロセスを開始するアプリケーションは失敗します。
WmiPrvse.exeとは
WmiPrvse.exe は、1 つ以上の WMI プロバイダーをホストできる Windows オペレーティング システム (OS) のプロセスです。 これは WMI サービスによって管理されます。 各 WMI プロバイダーには、主に WMI プロバイダー DLL ファイルと WMI プロバイダー MOF ファイルが含まれています。 WMI プロバイダーは WMI インフラストラクチャの一部であり、WMI サービスのタスクを受け入れて、ローカル またはリモート クライアントによって開始された WMI クエリに対処または処理します。
各 WmiPrvse.exe プロセスには、アクティブなときに使用できる定義済みのしきい値またはリソース クォータがあります。 例えば次が挙げられます。
HandlesPerHost
MemoryAllHosts
MemoryPerHost
ProcessLimitAllHosts
ThreadsPerHost
値は、WMI クラス __ProviderHostQuotaConfigurationのインスタンスとして定義されます。
イベント ID 5612
イベント ID 5612 は、最もわかりやすい便利な警告メッセージの 1 つです。 最初のイベントの例では、リソース PrivatePageCount
が536870912のクォータを超え、538353664の値に達したことを報告します。
リソースがクォータ制限に達した場合、または値を超えると、WMI サービスは仕様により、プロセスの追加消費を明示的に停止します。
この例では、リソースはメモリのエンティティの 1 つである PrivatePageCount
であり、 MemoryPerHost
プロパティによってホストごとに制限されます。
このイベントには、停止した WmiPrvse.exe プロセスでホストされているさまざまな WMI プロバイダーも一覧表示されます。
%systemroot%\system32\wbem\ntevt.dll
%SystemRoot%\System32\wbem\cluswmi.dll
%SystemRoot%\System32\wbem\cluswmi.dll
%systemroot%\system32\wbem\cimwin32.dll
上記のすべてのプロバイダーは、問題が原因で突然停止します。
問題を診断する
次のシナリオでは、イベント ID 5612 が発生する可能性があります。
- クライアント アプリケーションは、異常、非効率的、または大規模なクエリを実行します。
WMIPRVSE.EXE プロセスでは、WMI クエリの処理中にリソースが期待どおりに解放されないため、メモリ リークが発生し、WmiPrvse.exe プロセスが停止します。 - マシンまたは環境のセットアップの規模が大きい。
受信クエリを分析すると、最初の原因を特定し、問題を解決するのに役立ちます。 それ以外の場合は、Microsoft サポート ケースを開くことで、より詳細な調査が必要になります。
問題を診断するには、次の手順に従います。
問題のパターンを理解します。
アプリケーション イベント ログを確認し、イベント ID 5612 をフィルター処理して、頻度、履歴、パターンを理解します。
イベントに一覧表示されている一般的な WMI プロバイダーを特定します。
一覧表示されるプロバイダーは、すべてのイベントで同じである可能性があります。 もう 1 つの可能性は、プロバイダーの 1 つがより多くのリソースを消費し、この問題を引き起こし、他の WMI プロバイダーを混乱させる可能性があります。 この場合の目標は、問題のあるプロバイダーを診断して特定することです。
イベント ID 5612 に記載されている WmiPrvse.exe プロセスによって処理される受信クエリを分析します。
「受信クエリの分析」、「WMI トレース ファイルの確認」、「CPU 使用率の高いクライアント PID の検索」セクションに記載されている手順を実行します WMI の CPU 使用率の高い問題をトラブルシューティングする。 その後、次の情報を特定できます。
- クライアント プロセス
- 問題につながるクエリ
- クエリの頻度
- クライアント プロセス
クライアント アプリケーションが異常、非効率的、または大規模なクエリを実行する
クライアント アプリケーションが異常、非効率的、または大規模なクエリを実行すると、WMI プロバイダーが大量のリソースを消費する可能性があります。
アプリケーションがこのクエリを実行する理由と、必要な場合を確認して理解します。 環境内で不要な場合は、アプリケーションを削除するか、クエリの実行を停止します。 これは問題の解決に役立ちます。 この動作には、アプリケーション ベンダーを使用して対処できます。
WmiPrvse.exe プロセスがリソースを大量に消費する原因となる WMI クエリの実行がアプリケーションでわかっているか予想される場合、WmiPrvse.exe プロセスからのメモリやハンドル リークがない場合は、既定のクォータ制限を引き上げて既定値を 2 倍に増やす必要があります。
注意事項
- この変更は、リソースのリークがない場合にのみ有効です。 それ以外の場合、問題 (イベント ID 5612) はしばらくの間だけ遅延し、その後、定期的に開始されます。
- この変更は、システム上のすべての WMI プロバイダーに適用されます。 つまり、すべての WmiPrvse.exe プロセスは、適用された新しいクォータ制限に従ってリソースの消費を開始します。
既定のクォータ制限を増やすと、メモリ、ハンドル、CPU などのリソースの消費量が増える可能性があります。 そのため、事前に調査して問題を理解しないと、クォータ制限を増やすことはお勧めしません。
クォータ制限を引き上げるには、次の手順に従います。
管理者として Windows Management Instrumentation Tester (WBEMTEST) を開き、 Connect を選択して、"root" 名前空間に接続します。
Enum Instances を選択し、[クラス情報] ダイアログボックスに「__ProviderHostQuotaConfiguration」と入力し、OK を選択します。 Query の結果 ウィンドウが表示されます。 次に、最初の結果をダブルクリックしてオブジェクトを編集します。
Properties セクションで、以下に示す一覧まで下にスクロールし、これらのプロパティの値を変更してリソースを増やします。
Object エディター ウィンドウで、[オブジェクトの保存選択、Query の結果 ウィンドウを閉じて、WBEMTEST を終了します。
変更を有効にするには、WMI サービス (Winmgmt) を再起動します。
WmiPrvse.exe プロセスでリソースが期待どおりに解放されない
受信クエリを調査すると、 WmiPrvse.exe プロセスの動作を理解するのに役立ちます。
問題の原因となっているクライアント アプリケーションまたはサービスがない場合は、イベント ID 5612 で識別されたプロバイダーをホストしている WmiPrvse.exe プロセス アクティビティをさらに確認します。
プロセス エクスプローラーを使用してスレッドとスタックを確認します。
プロセス エクスプローラーを管理者として実行し、「問題の診断」セクションで説明されている手法を使用して、WmiPrvse.exe プロセスを見つけます。
Properties に移動しThreads タブを選択します。
各スレッドについて、スタックを確認し、Microsoft 以外のバイナリまたはファイルが見つからないかどうかを特定できます。
ウイルス対策ソフトウェア、監視ソフトウェア、脅威保護ソフトウェアなどのソフトウェアからのバイナリに気付く場合があります。 これらのソフトウェア アプリケーションは環境に役立ちますが、割り込んでこのような問題を引き起こす場合があります。 そのため、それらを一時的にアンインストールし、問題を確認できます。
特定された Microsoft 以外の製品を削除すると問題の解決に役立つ場合は、製品ベンダーに製品のこの動作に対処できます。
そうでない場合は、Microsoft サポート担当者に連絡してイベント トレース ログ (ETL) トレースを分析し、WMI プロバイダーのダンプを確認する必要があります。
データ収集
サポート ケースを開いて問題をさらに調査する前に、TSS for User Experience の問題を使用して、 Gather 情報に記載されている手順に従って情報を収集できます。
TSS.zipをダウンロードし、内容を抽出します。
管理者特権の PowerShell コマンド プロンプトから次のコマンドレットを実行して、トレースを開始します。
.\TSS.ps1 -UEX_WMIAdvanced -noBasicLog
エラーまたは気付いた ID が再現されるか、特定された WmiPrvSE.exe の問題が表示されるまで、トレースをオンのままにします。 トレースを 2 分から 3 分以上実行したままにします。
TSS ツールセットに従って、PowerShell コマンド プロンプトの手順に従ってトレースを停止します。
スクリプトによって、すべてのトレース結果と診断情報を含む zip ファイルが作成されます。 サポート ケースが作成されたら、このファイルをセキュリティで保護されたワークスペースにアップロードして分析できます。