このトピックでは、アプリケーション、システムサービス、または不適切な構成が原因で発生する可能性がある Windows サーバーの高いメモリ使用量について、トラブルシューティングを行い、問題を解決するための手順を説明します。
問題の現象
以下のいずれかの現象が発生した場合、ご利用の Windows サーバーでメモリリソースのボトルネックが発生している可能性があります。
Windows サーバー上で実行されているビジネスアプリケーションの応答が遅い、サービス中断が発生する、またはシステムがカクつく。
Simple Application Server コンソールでのインスタンスのメモリ使用量監視で、メモリ使用率が非常に高いことが示されている。
メモリ使用量が指定されたしきい値を超えたというアラートを受信する。
トラブルシューティングのフロー
状況の評価: タスクマネージャーを使用してメモリ使用量の概要を把握し、重大なメモリプレッシャーがあるかどうかを判断します。
プロセスの分析: リソースモニターを使用して詳細な分析を行います。物理メモリの使用量でソートして、最も多くのメモリを消費しているプロセスを特定します。
問題の解決: 分析に基づいて適切なソリューションを実装します。
継続的な追跡: ソリューションを実装した後、サーバーの継続的な監視とアラートを設定します。
操作手順
以下の手順では、Windows Server 2025 Datacenter Edition を例として説明します。バージョンによって、ユーザーインターフェースが異なる場合があります。
ステップ 1: 全体的なメモリ状況の評価
タスクバーを右クリックし、[タスクマネージャー] を選択します。
[パフォーマンス] タブに切り替え、[メモリ] を選択します。
主要なメトリックを分析します:
利用可能: システムがアプリケーションに即座に割り当てることができる物理メモリの量。
コミット済み: オペレーティングシステムがすべてのプロセスにコミットした仮想メモリの合計量。この値は
X/Yのように表示されます。Xは現在使用されている仮想メモリです。Yは仮想メモリの上限 (物理メモリ + ページングファイルのサイズ) です。Xが常にYに近い値である場合、システムが頻繁にページングファイルを使用している可能性があり、パフォーマンスが低下する可能性があります。
ステップ 2: メモリ消費量の多いプロセスの特定
まず、[リソースモニター] を使用してプロセスを特定します。[リソースモニター] で異常なアプリケーションプロセスが見つからない場合は、RAMMap ツールを使用してシステムレベルのメモリ使用量を分析します。
リソースモニター
タスクバーの検索ボックスに 「リソースモニター」 と入力して開きます。
[メモリ] タブに切り替えます。
[ワーキングセット (KB)] 列をクリックして降順にソートします。これにより、最も多くの物理メモリを使用するプロセスが一番上に表示されます。
リストの先頭にあるプロセスを分析します。[ワーキングセット] メトリックに注目します。このメトリックは、プロセスが実際に使用している物理メモリを表し、プロセスのメモリ消費量の主要な指標です。ワーキングセットが最も高いプロセスを特定し、それが想定内のビジネスプロセスであるかどうかを判断します。
ワーキングセット (KB): プロセスが現在使用している物理メモリの量。
コミット (KB): オペレーティングシステムがプロセスのために予約した仮想アドレス空間のサイズ。プロセスは大量のメモリをコミットしても、実際には使用しない場合があります。このメトリックは誤解を招く可能性があります。

RAMMap ツール
[リソースモニター] で異常なプロセスが表示されないにもかかわらず、利用可能なメモリが依然として少ない場合は、ファイルキャッシュやドライバーのリークなど、システムレベルのメモリ使用量を検討します。この場合、Microsoft の公式ツールである RAMMap を使用して詳細な分析を行います。
RAMMap をダウンロードして実行します。
RAMMap の公式ダウンロードページにアクセスして、ツールパッケージをダウンロードし、解凍します。
RAMMap.exeをダブルクリックしてプログラムを実行します。
以下のリストは、各タブが表示する内容を説明しています。

Use Counts: タイプ別およびページングリスト別の使用状況の概要。
Processes: プロセスのワーキングセットサイズ。
Priority Summary: 優先度別に分類されたスタンバイリストのサイズ。
Physical Pages: すべての物理メモリのページごとの使用状況。
Physical Ranges: 物理メモリアドレス。
File Summary: RAM 内のファイルデータをファイル別に表示。
File Details: 個々の物理ページをファイル別に表示。
ステップ 3: さまざまなシナリオに基づく対処と最適化
特定したメモリ使用量の高い原因に基づいて、適切なソリューションを選択します。
シナリオ 1: 異常なプロセスが大量のメモリを消費している
ビジネスに関係のないプロセスや異常なプロセスが大量のメモリを消費していることが判明した場合は、そのプロセスを停止する必要があります。
[タスクマネージャー] または [リソースモニター] で、大量のメモリを使用しているプロセスを見つけます。プロセスを右クリックし、[タスクの終了] を選択します。プロセスが悪意のあるものであると疑われる場合は、Security Center のウイルススキャン機能を使用できます。
Security Center のウイルススキャン機能は有料サービスです。
プロセスを終了する前に、サービスの中断を避けるために、そのプロセスの役割を必ず確認してください。
シナリオ 2: 通常のビジネスプロセスがメモリのボトルネックを引き起こしている
通常のビジネスプロセスがメモリのボトルネックを引き起こしている場合は、インスタンスタイプのスペックをアップグレードします。コンソールでスペックアップを実行し、より多くのメモリを持つプランを選択します。
単一のビジネスプロセスが大量のメモリを使用していることが判明した場合は、インスタンスタイプのスペックアップに加えて、ビジネスプロセスを最適化することもできます。
ステップ 4: 継続的な追跡
アラートの設定: サーバーのメモリ使用量または利用可能なメモリのメトリックに対してアラートルールを設定します。詳細については、「クラウドサービスの監視」をご参照ください。
継続的な監視: CloudMonitor のページでサーバーのシステムメトリックを確認します。
監視によって、ビジネスプロセスに時折、短時間で、頻度の低いメモリスパイクがあることが示された場合、スワップパーティション (スワップ領域) を設定することでこの問題を緩和できます。詳細については、「Windows インスタンスの仮想メモリを設定する方法」をご参照ください。問題を完全に解決するには、インスタンスタイプのスペックアップを検討してください。
関連ドキュメント
Microsoft の Process Explorer を使用して、プロセスのメモリ使用量に関するより詳細な情報を取得できます。
Microsoft の公式ツール Poolmon を使用して、プールタグによってカーネルメモリプールの消費源を追跡し、特定します。