すべてのプロダクト
Search
ドキュメントセンター

Simple Application Server:Windows インスタンスの高い CPU 使用率のトラブルシューティング

最終更新日:Jul 17, 2026

Windows インスタンスの CPU 使用率が 80% 以上に達した場合、このガイドを使用して原因を特定し、適切な解決策を適用します。

現象

Windows インスタンスの CPU 使用率が 80% 以上になっています。

原因

一般的な原因:

  • ウイルスまたはトロイの木馬の感染。

  • インスタンス上で実行されているサードパーティ製のウイルス対策ソフトウェア。

  • 異常なアプリケーションまたはドライバー、高い I/O 使用率、または高い割り込み率。

解決策

ステップ 1:問題の特定

タスク マネージャーやリソース モニターなどのツールを使用して、高い CPU 使用率の原因となっているプロセスを特定します。

以下の手順では、Windows Server 2022 のリソース モニターを例として使用します。

  1. VNC を介してインスタンスに接続します。レスキュー用のサーバーへの接続 (コンソール) をご参照ください。

  2. デスクトップの下部で、[検索] ボタンをクリックし、[Resource Monitor] と入力して、[OK] をクリックします。

  3. [CPU] タブをクリックします。プロセスエリアで、[CPU] 列で並べ替えて、CPU 使用率の高いプロセスとそれに対応する PID を特定します。

  4. [リソースモニター] ウィンドウで、CPU 使用率が極端に高いプロセスがないか確認します。

    image

  5. 高い CPU リソースを消費するプロセスについて、そのプロセス ID (PID) とプログラム名を記録します。

  6. タスクマネージャーを開きます。[詳細] タブで、リソースモニターで特定した異常なプロセス名とそれに対応する PID を見つけます。プロセス名を右クリックし、[ファイルの場所を開く] を選択して、そのプロセスが悪意のあるプログラムであるかどうかを判断します。

ステップ 2:問題の分析と解決

CPU 使用率の高いプロセスが正常なプロセスか異常なプロセスかを特定し、対応する手順に従ってください。

考えられる原因

操作

正常なプロセス

頻繁なビジネスアクセスや、更新サービスなどの Windows サービスは、高い CPU リソースを消費する可能性があります。

説明
  • Windows Server 2008 または Windows Server 2012 インスタンスの場合は、少なくとも 2 GiB のメモリを設定してください。

  • Windows Server 2012 を実行している 1 vCPU および 1 GiB のメモリを搭載したインスタンスでは、Windows Update により一時的な CPU のスパイクが発生する可能性があります。これは想定された動作です。

  • Windows Update がバックグラウンドで実行されているかどうかを確認してください。

  • ウイルス対策ソフトウェアをインストールして、ウイルスをスキャンしてください。ウイルス対策ソフトウェアが既にインストールされている場合は、高い CPU 使用率が発生している間にバックグラウンドスキャンが実行されているかどうかを確認してください。必要に応じて、ウイルス対策ソフトウェアをアップグレードまたは削除してください。

  • アプリケーションに過度なディスク、ネットワーク、またはコンピューティングの需要があるかどうかを確認してください。インスタンスタイプをアップグレードして、より多くのコアまたはメモリを追加してください。詳細については、「構成のアップグレード」をご参照ください。

  • サーバーが既に高スペックの場合、さらにアップグレードしても効果がない可能性があります。代わりに、アプリケーションを複数のサーバーに分散し、プログラムを最適化してください。

    たとえば、データベースを ApsaraDB RDS にオフロードして、サーバーのリソース消費を削減できます。プログラムの最適化では、接続数、キャッシュ設定、Web またはデータベース呼び出しのパラメーターを調整してください。

異常なプロセス

悪意のあるプログラムは、svchost.exe や Tcpsvcs.exe などのシステムプロセスを装い、高い CPU 使用率を引き起こす可能性があります。異常なプロセスを手動で特定して終了してください。

説明

プロセスが悪意のあるものかどうかを特定できない場合は、オンラインでプロセス名を検索してください。プロセスを削除する前に、データをバックアップしてください。スナップショットの作成をご参照ください。

  • Windows Update を実行して、最新の Microsoft セキュリティパッチをインストールしてください。

  • MSConfig を使用して、Microsoft 以外のすべてのサービスとドライバーを無効にしてから、問題が解決するかどうかを確認してください。Windows でクリーンブートを実行する方法をご参照ください。

  • サーバーが DDoS または HTTP フラッド攻撃を受けている場合は、Security Center コンソールにログオンして、DDoS 保護のしきい値と HTTP フラッド保護が正しく設定されていることを確認してください。攻撃がスクラビングをトリガーしない場合は、アフターサービスサポートにお問い合わせください。

診断ツール

以下のツールは、Windows インスタンスの高い CPU 使用率の原因を特定するのに役立ちます。

タスク マネージャー

タスク マネージャーには、実行中のアプリケーションとその CPU 使用率が一覧表示されます。

タスク マネージャーの [プロセス] タブでは、プロセスが CPU 使用率の降順で並べ替えられています。[Antimalware Service Executable] は CPU を 26.7%、メモリを 264.2 MB 使用しており、CPU 使用率が最も高いプロセスとなっています。

パフォーマンス タブで、CPU 使用率グラフを右クリックし、[グラフの変更] > [論理プロセッサ]を選択します。

単一のプロセスがほぼ 100% にスパイクする一方で、他のプロセスが安定している場合、原因はネットワーク I/O 処理である可能性があります。

リソース モニター

リソース モニターは、CPU 使用率のグラフィカルビューを提供し、ハンドルまたはモジュールでプロセスを検索できます。

[CPU] タブをクリックします。[プロセス] エリアで、[CPU] 列を使用して各プロセスの CPU 使用率を確認します。右側の折れ線グラフで CPU 使用率の傾向を観察できます。

CPU 使用率の折れ線グラフには、2 つの顕著な使用率のスパイクが表示されています (現在の全体的な使用率は 5%)。ランタイム環境は仮想マシン (Intel Xeon Platinum、2 仮想プロセッサ、ベース速度 2.50 GHz) です。

Process Explorer

Process Explorer は、スレッドのコールスタックを検査して問題のあるドライバーを特定する Microsoft Sysinternals のツールです。使用する前に、正しいシンボルを設定してください。Process Explorer をご参照ください。

Process Explorer のインターフェースには、実行中のすべてのプロセスがツリービューで表示されます。主な列には、[プロセス] (プロセス名)、[CPU] (CPU 使用率)、[プライベートバイト][ワーキングセット][PID][説明]、および [会社名] が含まれます。下部のステータスバーにはシステム全体のリソース使用状況が表示され、これには [CPU 使用率][コミットチャージ][プロセス] (合計プロセス数)、および [物理使用量] (物理メモリ使用量) が含まれます。プロセスリストで対象のプロセスを選択し、問題診断のためにそのスレッドのコールスタックをさらに調査することができます。

パフォーマンス モニター

パフォーマンス モニターは、さまざまなシステムコンポーネントからパフォーマンス カウンターを収集します。CPU リソースの消費を分析するには、次のカウンターを確認してください。

主要なパフォーマンス カウンター:

  • \Processor(_Total)\% Processor Time:プロセッサがアイドル状態でないスレッドを実行する時間の割合。\Processor(_Total)\% Processor Time = \Processor(*)\% User Time + \Processor(*)\% Privileged Time

  • \Processor(*)\% User Time:プロセッサがアプリケーションコードを実行する時間。このカウンターを使用して、どのアプリケーションまたは関数が最も多くの CPU 時間を消費しているかを特定できます。

  • \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 の値は、プロセスまたはスレッド間でカーネルの切り替えが頻繁に発生していることを示します。 これについては、「200万回のコンテキストスイッチの事例」「Mark Russinovich 氏のシステムプロセスの CPU スパイクの事例」をご参照ください。

      高い Context Switches/sec の値は、Ready 状態のスレッドが多すぎることを示しています。これを解決するには、スレッド数を減らしてください。