Windows では、タスク マネージャーやリソース モニターなどのツールを使用して CPU 使用率を確認できます。このトピックでは、Windows Elastic Compute Service (ECS) インスタンスで CPU 使用率が高い問題のトラブルシューティングと解決方法について説明します。
問題の説明
Windows ECS インスタンスを使用する場合、次の問題が発生する可能性があります。
システムの無反応、サービス応答の遅延、またはアプリケーション パフォーマンスの低下。
ECS コンソールに高い CPU 使用率または負荷が表示される。 80% を超える CPU 使用率と 0.5 を超える負荷は高いと見なされます。
過剰な CPU 使用率または負荷を示すアラートが生成される。
原因
Windows ECS インスタンスの CPU 使用率が高い理由は、次のいずれかである可能性があります。
ECS インスタンスがウイルスに感染している、またはトロイの木馬による攻撃を受けている。
サードパーティ製のウイルス対策ソフトウェアがインスタンス上で実行されており、過剰な CPU リソースを消費している。
インスタンス上のアプリケーションまたはドライバーで例外が発生したか、アプリケーションの I/O 使用率または割り込み率が高い。
問題のトラブルシューティング
リソース モニターを使用して CPU 使用率メトリックを表示する
このセクションでは、リソース モニターを使用して、Windows Server 2022 を実行しているインスタンスで CPU 使用率が高い問題を特定する方法について説明します。その他の一般的に使用されるツールの詳細については、「一般的なツール」をご参照ください。
Virtual Network Computing (VNC) を使用して ECS インスタンスに接続します。
詳細については、「VNC を使用してインスタンスに接続する」をご参照ください。
デスクトップの下部にある [検索] アイコンをクリックし、「
Resource Monitor」と入力して、[OK] をクリックします。[リソース モニター] ウィンドウで、CPU 使用率が高い原因となっているプロセスを確認します。

プロセスのプロセス ID (PID) と名前を記録します。
[タスク マネージャー] ウィンドウを開き、[詳細] タブをクリックして、記録された名前と PID に基づいてプロセスを見つけます。各プロセス名を右クリックし、[ファイルの場所を開く] を選択して、プロセスが悪意のあるプログラムかどうかを確認します。
問題の解決
次の表に、CPU 使用率が高い問題の一般的な原因とその解決策を示します。
問題 | 原因 | 解決策 |
異常なユーザープログラムまたはプロセスが長期間にわたって過剰な CPU リソースを占有し、CPU 使用率と負荷が高くなっている。 | プログラムまたはプロセスが実行時に過剰な CPU リソースを消費している。 |
|
通常のユーザープログラムまたはプロセスが長期間にわたって過剰な CPU リソースを占有し、CPU 使用率と負荷が高くなっている。 | ビジネスプログラムまたはプロセスが実行時に過剰な CPU リソースを消費している。 | インスタンスで CPU パフォーマンスのボトルネックが発生している場合は、次のいずれかの方法で問題を解決します。
|
ビジネスプログラムまたはプロセスが短期間にわたって過剰な CPU リソースを占有するか、負荷が高くなることがある。 | 暗号化、復号、高い同時実行性などの特殊なシナリオに合わせてビジネスプログラムを最適化する必要がある。 | ビジネスプログラムを最適化する。 |
プログラムまたはプロセスが過剰な CPU リソースを消費していないが、全体的な CPU 使用率が高く、負荷が低い。 | インスタンスのサービスの通常の動作に必要な CPU リソースが、インスタンスの CPU パフォーマンス容量を超えている。 | インスタンスで CPU パフォーマンスのボトルネックが発生している場合は、インスタンスタイプをスペックアップします。詳細については、「インスタンスタイプの変更」をご参照ください。 |
一般的なツール
このセクションでは、CPU 使用率が高い問題を特定するために使用される一般的な Windows 標準ツールについて説明します。
タスク マネージャー
タスク マネージャーを使用すると、アプリケーションとプロセスのリストを表示し、CPU 使用率が高い原因となっているアプリケーションを特定できます。次の図は、[タスク マネージャー] ウィンドウを示しています。

[パフォーマンス] タブで、CPU グラフを右クリックし、 を選択します。
次の図に示すように、2 つの論理プロセッサの使用率を示す 2 つのグラフが表示されます。

プロセスの CPU 使用率がほぼ 100% に急上昇し、他のプロセスの CPU 使用率に大きな変化がない場合は、ネットワーク I/O の問題が発生している可能性があります。
リソース モニター
リソース モニターを使用すると、CPU 使用率を視覚的に確認し、ハンドルとモジュールに基づいてプロセスを検索できます。

プロセス エクスプローラー
プロセス エクスプローラーは、Microsoft Sysinternals スイートの一部です。シンボルを構成して、アプリケーションのスレッド呼び出しスタックを確認し、潜在的な異常ドライバーを特定できます。プロセス エクスプローラーは、プロセス エクスプローラー からダウンロードできます。
次の図は、[プロセス エクスプローラー] ウィンドウを示しています。

パフォーマンス モニター
パフォーマンス モニターを使用すると、さまざまなコンポーネントのパフォーマンスカウンターを収集して CPU リソース消費を監視できます。
次の重要なパフォーマンスカウンターに注意してください。
\Processor(_Total)\% Processor Time: プロセッサがアイドル状態ではないスレッドの実行に費やす時間の割合。\Processor(_Total)\% Processor Time=\Processor(*)\% User Time+\Processor(*)\% Privileged Time.\Processor(*)\% User Time: プロセッサがユーザーモードでコードを実行に費やす時間の割合。このパフォーマンスカウンターは、プロセッサが多くの時間を費やしているアプリケーションまたは関数を特定するのに役立ちます。\Processor(*)\% Privileged Time: アプリケーションがカーネル (または特権) モードでシステムコール (ドライバー、I/O リクエストパケット (IRP)、コンテキストスイッチなど) の実行に費やす時間の割合。オペレーティングシステムの% Privileged Timeパフォーマンスカウンターの値が 30% を超える場合、インスタンスは I/O リクエストの処理に多くの時間を費やしています。% Privileged Timeの値が大きい場合は、% DPC Time、% Interrupt Time、Context Switches/secパフォーマンスカウンターを確認してください。% DPC Timeと% Interrupt Timeの値が大きい場合は、不明なデバイスが多くの操作を実行しているか、パフォーマンスが低いことを示します。Context Switchの値が大きい場合は、カーネルがプロセッサ上のプロセスまたはスレッドを切り替えていることを示します。詳細については、The Case of the 2 Million Context Switches および Mark Russinovich's The Case of the System Process CPU Spikes を参照してください。Context Switches/secの値が大きい場合は、多くのスレッドが Ready 状態にあることを示します。この問題を解決するには、スレッドの数を減らします。
参照
Linux システムでの CPU 使用率が高い問題の解決方法については、「Linux インスタンスでの CPU 使用率または負荷が高い問題のトラブルシューティングと解決」をご参照ください。