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

Simple Application Server:Windows インスタンスにおける高い CPU 使用率のトラブルシューティングと解決

最終更新日:Dec 24, 2025

このトピックでは、Windows インスタンスにおける高い CPU 使用率のトラブルシューティングと解決方法について説明します。

問題の説明

Windows インスタンスの CPU 使用率が 80% 以上になると、高いと見なされます。

考えられる原因

高い CPU 使用率は、以下の原因によって引き起こされる可能性があります。

  • インスタンスがウイルスまたはトロイの木馬に感染している。

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

  • インスタンス上のアプリケーションまたはドライバーが異常であるか、アプリケーションの I/O 使用量が高い、または割り込み率が高い。

ソリューション

ステップ 1:問題の特定

Windows インスタンスでは、タスクマネージャーやリソースモニターなどのツールを使用して、高い CPU 使用率の原因を特定できます。このトピックでは、Windows Server 2022 オペレーティングシステムのリソースモニターを例として使用します。

このトピックでは、Windows Server 2022 システムでリソースモニターを使用して、高い CPU 使用率の原因を特定する方法について説明します。

  1. VNC 接続を使用して Simple Application Server に接続します。詳細については、「サーバーに接続してレスキュー (コンソール)」をご参照ください。

  2. デスクトップの下部にある [検索] ボタンをクリックし、「リソースモニター」と入力して [OK] をクリックします。

  3. [リソースモニター] ウィンドウで、高い CPU 使用率の原因となっているプロセスを確認します。

    image

  4. プロセスのプロセス ID (PID) と名前を記録します。

  5. [タスクマネージャー] ウィンドウを開き、[詳細] タブをクリックして、記録した名前と PID に基づいてプロセスを見つけます。各プロセス名を右クリックし、[ファイルの場所を開く] を選択して、そのプロセスが悪意のあるプログラムであるかどうかを確認します。

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

高い CPU 使用率の原因となっているプロセスが通常のプロセスか異常なプロセスかを判断し、対応する手順に従って問題を解決します。

考えられる原因

操作

通常のプロセス

一般的に、頻繁なビジネスアクセスや Windows Update サービスなどの Windows サービスは、高いネットワークトラフィックと CPU リソースを消費する可能性があります。

説明
  • Windows Server 2008 または Windows Server 2012 インスタンスでは、少なくとも 2 GB のメモリを構成してください。

  • Windows Server 2012 を実行する 1 vCPU と 1 GB のメモリを搭載したインスタンスを使用する場合、Windows Update サービスが自動的に更新を実行し、CPU 使用率が急激に上昇することがあります。これは正常な動作です。

  • Windows Update がバックグラウンドで実行されていないか確認します。

  • サーバーにウイルス対策ソフトウェアをインストールしてウイルスをスキャンします。ウイルス対策ソフトウェアが既にインストールされている場合は、CPU 使用率が高いときにバックグラウンドでスキャンが実行されていないか確認します。可能であれば、ウイルス対策ソフトウェアを最新バージョンにアップグレードするか、アンインストールします。

  • サーバー上のアプリケーションに多くのディスクアクセスやネットワークアクセスの動作、または高いコンピューティング要件がないか確認します。インスタンスタイプをより多くのコアまたはメモリを持つものにスペックアップして、リソースのボトルネックを解決することを試みてください。詳細については、「構成のアップグレード」をご参照ください。

  • ご利用のサーバーが既に高い構成である場合、さらなるスペックアップは効果的でない可能性があります。サーバー構成が高ければ高いほどアーキテクチャにとって良いとは限りません。この場合、異なるサーバーで異なるアプリケーションをホストすることでアプリケーションを分離し、関連するプログラムを最適化してみてください。

    例えば、ApsaraDB RDS を使用してデータベースをホストします。これにより、サーバーのリソース消費が削減され、内部呼び出しの数が減少します。プログラムの最適化については、ご利用の構成に基づいて調整を行うことができます。具体的な操作には、接続数、キャッシュ構成、Web およびデータベース呼び出しの各種パラメーターの調整が含まれます。

異常なプロセス

異常に高い CPU 使用率は、悪意のあるウイルスやトロイの木馬によって引き起こされる可能性があります。サードパーティの悪意のあるプログラムが、オペレーティングシステムプロセスである svchost.exe や Tcpsvcs.exe に偽装し、高い CPU 使用率を引き起こすことがあります。異常なプロセスを手動で見つけて強制終了する必要があります。

説明

プロセスがウイルスかトロイの木馬か判断できない場合は、インターネットでプロセス名を検索して確認してください。プロセスを削除する前に、スナップショットを作成してデータをバックアップしてください。詳細については、「スナップショットの作成」をご参照ください。

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

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

  • ご利用のサーバーまたはサイトが DDoS 攻撃または HTTP フラッド攻撃を受けている場合、短時間に多くのアクセスリクエストが生成されます。Security Center コンソールにログインして、DDoS 対策のしきい値が適切に構成されているか、また HTTP フラッド攻撃保護が有効になっているかを確認できます。攻撃がしきい値をトリガーせず、Security Center がトラフィックスクラビングを実行しない場合は、アフターサービスサポートに連絡してトラフィックスクラビングを有効にしてください。

一般的なツール

以下のセクションでは、Windows で高い CPU 使用率の原因を特定するために使用されるツールについて説明します。

タスクマネージャー

タスクマネージャーは実行中のアプリケーションのリストを表示し、CPU 使用率の高いアプリケーションを特定するのに役立ちます。次の図は、タスクマネージャーのページを示しています。

image

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

次の図は、2 つの論理 CPU の使用率を示しています。

image

単一プロセスの CPU 使用率がほぼ 100% に急上昇し、他のプロセスの CPU 使用率に大きな変化がない場合、原因はネットワーク I/O 処理である可能性があります。

リソースモニター

リソースモニターは、CPU 使用率をグラフィカルに表示します。また、ハンドルやモジュールによって対応するプロセスを検索することもできます。

image

Process Explorer

Process Explorer は Microsoft Sysinternals のツールです。正しいシンボルを設定することで、アプリケーションのスレッドの呼び出しスタックを確認し、問題のある可能性のあるドライバーを特定できます。Process Explorer ツールをダウンロードするには、「Process Explorer」をご参照ください。

次の図は、Process Explorer ツールのページを示しています。

image

パフォーマンスモニター

パフォーマンスモニターは、さまざまなコンポーネントからパフォーマンスカウンターを収集するための Microsoft のツールです。システムの CPU リソース消費を分析するために、いくつかのカウンターを確認できます。

パフォーマンスに関連する 3 つのコアパラメーターは次のとおりです:

  • \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 の値は、多くのスレッドが準備完了状態にあることを示します。問題を解決するには、スレッドの数を減らす必要があります。