このトピックでは、システムの応答が遅くなるなどの問題につながる可能性がある、Windows インスタンスでの高いメモリ使用率の原因を特定して解決する方法について説明します。
このトピックの例では、Windows Server 2022 を使用しています。オペレーティングシステムのバージョンによって、ユーザーインターフェイスが若干異なる場合があります。ご使用のオペレーティングシステムの UI を参照してください。
現象
Windows を実行している ECS インスタンスの動作が断続的に遅くなったり、内部サービスの応答が遅くなったりすることがあります。ECS コンソールでは、メモリ監視で高いメモリ使用率が表示されるか、高いメモリ使用率に関するアラートが通知されます。
考えられる原因
高いメモリ使用率の一般的な原因には、次のようなものがあります。
-
異常なプロセスやサービスが大量のメモリを消費していること。
-
アプリケーションのワークロードが高く、インスタンスで利用可能な物理メモリよりも多くのメモリを必要としていること。
操作手順
高いメモリ使用率の原因を特定するには、次の手順を実行します。
合計メモリ使用量の確認
Windows 組み込みの[タスク マネージャー]を使用してメモリ使用量を確認します。
-
Windows デスクトップの左下隅にある検索ボックスに[タスク マネージャー]と入力し、
Enterキーを押して[タスク マネージャー]を開きます。 -
[タスク マネージャー] で、[パフォーマンス] タブをクリックし、左側のペインで [メモリ] をクリックしてメモリ使用量を確認します。
右側のペインには、合計容量、[使用中 (圧縮)] メモリ、[利用可能] メモリ、メモリ使用率など、メモリ使用量の詳細が表示されます。
プロセスごとのメモリ使用量の表示
Windows の [リソース モニター] を使用して、プロセスごとのメモリ使用量などのリソース使用状況を確認します。
-
Windows デスクトップの左下隅にある検索ボックスに [リソース モニター] と入力し、
Enterキーを押して [リソース モニター] を開きます。 -
[リソースモニター]で、[メモリ] タブをクリックして各プロセスのメモリ使用量を確認します。[コミット (KB)] 列の値を確認し、大量のメモリを消費するプロセスを特定します。次に、業務負荷に基づいて、プロセスの動作が想定どおりであるかどうかを判断します。
物理メモリの使用量は、次の部分で構成されています。
-
ハードウェア予約済みメモリ:システムがハードウェアデバイス用に予約する物理メモリの一部です。これらのデバイスには、GPU (グラフィックスプロセッシングユニット)、サウンドカード、ネットワークカード、Bluetooth モジュールなどが含まれます。この予約済みメモリは、標準アプリケーションでは使用できず、ハードウェアデバイスの正常な動作をサポートするために確保されています。
-
使用中のメモリ:プロセス、ドライバー、およびオペレーティングシステムによって使用されるメモリです。
-
変更済みメモリ:他の目的で使用する前に、内容をディスクに書き込む必要があるメモリです。
-
スタンバイメモリ:未使用のキャッシュされたデータとコードを含むメモリです。
-
空きメモリ:有効なデータを含まないメモリです。このメモリは、プロセス、ドライバー、またはオペレーティングシステムがより多くのメモリを要求する必要がある場合に最初に使用されます。
-
キャッシュ:ファイルが開かれると、システムは後続の読み取りと書き込みを高速化するために、ファイルをキャッシュに保存します。Windows Server 2008 R2 以降では、このキャッシュの使用は制限されています。これにより、キャッシュが大きい場合でも、アプリケーションで十分な物理メモリを利用できる状態が維持されます。
-
システムプロセスのメモリ使用量の表示
タスクマネージャーとリソースモニターに大量のメモリを消費するプロセスが表示されず、それでもインスタンスのメモリ使用率が高い場合、システムプロセスによるメモリ消費量が多いことが原因である可能性があります。 この場合、Microsoft の [RamMap] ツールを使用して、さらに分析できます。 このツールは、システムプロセスによって RAM にキャッシュされているファイルデータの量と、カーネルおよびデバイスドライバーによって使用されている RAM の量を表示できます。
-
[RamMap] ツールをダウンロードして解凍します。
Microsoft の Web サイトにアクセスして RamMap をダウンロードします。ダウンロード後、パッケージを解凍します。
-
[RamMap]をダブルクリックして、メモリ使用量の詳細を表示します。
デフォルトでは、RamMap は [Use Counts] タブで開きます。この表には、Process Private、Mapped File、Shareable、Page Table、ページ プール、非ページ プール、メタファイルなどのメモリタイプが一覧表示され、使用量は [Total]、[Active]、[Standby]、[Modified]、[Zeroed]、[Free] などの列に表示されます。上部には、色分けされた棒グラフで各タイプの割合が表示されます。
RamMap ツールのタブは、さまざまな方法でリソース使用状況情報を表示します。次のリストでは、各タブについて説明します。
-
[Use Counts]:タイプ別およびページリスト別の使用状況のサマリー。
-
[Processes]:各プロセスのワーキングセットサイズ。
-
[Priority Summary]:優先度別のスタンバイリストサイズ。
-
[Physical Pages]:すべての物理メモリのページごとの使用状況。
-
[Physical Ranges]:物理メモリアドレス。
-
[File Summary]:ファイルごとにグループ化された RAM 内のファイルデータ。
-
[File Details]:ファイルごとにグループ化された個々の物理ページ。
-
高いメモリ使用率の解決
次の表では、高いメモリ使用率の原因と解決策について説明します。
|
問題 |
原因 |
解決策 |
|
単一のユーザーアプリケーションまたはプロセスが、長期間にわたって過剰なメモリを消費している。 |
異常なアプリケーションまたはプロセスが過剰なメモリを消費している。 |
[タスク マネージャー] または [リソース モニター] で、メモリ使用量が最も多いアプリケーションを特定し、そのアプリケーションを右クリックして、[タスクの終了] を選択します。 警告
プロセスを終了する前に、それが何をするものかを理解し、サービス停止を避けてください。 |
|
ワークロードが、インスタンスが提供する物理メモリよりも多くの物理メモリを必要としている。 |
ワークロードを評価し、インスタンスタイプを変更して物理メモリを追加することを推奨します。 |
|
単一のアプリケーションまたはプロセスで、メモリ使用量が一時的に急増することが稀に発生する。 |
トラフィックの急増やスケジュールされたタスクが、短期間の高いメモリ消費を引き起こしている。 |
|
関連ドキュメント
-
Linux での高いメモリ使用率については、「Linux インスタンスでの高いメモリ使用率を解決する方法」をご参照ください。
-
Microsoft の Process Explorer を使用して、プロセスのメモリ使用量の詳細情報を表示できます。
-
Microsoft の Poolmon ツールを使用して、プール タグを基にカーネルメモリプールの消費元を追跡および特定できます。