空き出力に基づいてRAMをアップグレードするタイミング

空き出力に基づいてRAMをアップグレードするタイミング

物理メモリ (RAM) が 12 GB 割り当てられた Linux サーバー上で実行される Java アプリケーションがあり、一定期間にわたる通常の使用率は以下のように表示されます。

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G        7.8G        1.6G        9.0M        2.2G        3.5G
Swap:            0B          0B          0B

最近、アプリケーションの負荷を増やすと、RAM の使用率がほぼいっぱいになり、使用可能なスペースが非常に少なくなり、速度が低下する可能性があることがわかりましたが、それでもアプリケーションは正常に動作し続けています。

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        134M         17M        411M        240M
Swap:            0B          0B          0B
sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        145M         25M        373M        204M
Swap:            0B          0B          0B

私が参照したのはhttps://www.linuxatemyram.com/そこで以下の点が示唆されました。

警告表示実際にメモリ不足の状況を調べる必要がある場合があります。

  • 使用可能なメモリ(または「空き + バッファ/キャッシュ」)がゼロに近い
  • 使用されるスワップが増加または変動します。
  • dmesg | grep oom-killer は OutOfMemory-killer が動作していることを示します

上記の点から、アプリケーションレベルではOOMの問題は見当たらず、スワップも無効になっています。そのため、この2つの点は無視します。気になるのは、利用可能なメモリがゼロ未満である点です。この点について説明が必要です。

質問:

  1. 使用可能数が 0 に近づいた場合、システムクラッシュが発生しますか?
  2. 使用可能なメモリが少なくなった場合、RAM をアップグレードする必要があるということですか?
  3. RAM メモリはどのような基準で割り当て/増加する必要がありますか?
  4. RAM メモリの割り当てに関して従う必要のある公式の推奨事項やガイドラインはありますか?

答え1

私の質問の1つに答えを得ることができた

使用可能数が 0 に近づいた場合、システムクラッシュが発生しますか?

私のサーバーの1つでテストしたところ、以下のようにメモリがほぼいっぱいになりました。

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        135M         25M        187M         45M
Swap:            0B          0B          0B

メモリ消費量が多いアプリケーションだけが、カーネルログで参照できるメモリ不足キラーによって強制終了されたことがわかります。

dmesg -e

[355623.918401] [21805] 553000 21805 69 21 2 0 0 rm
[355623.921381] Out of memory: Kill process 11465 (java) score 205 or sacrifice child
[355623.925379] Killed process 11465 (java), UID 553000, total-vm:6372028kB, anon-rss:2485580kB, file-rss:0kB, shmem-rss:0kB

https://www.kernel.org/doc/gorman/html/understand/understand016.html

Out Of Memory Killer (OOM Killer) は、システムのメモリが極端に不足しているときに Linux カーネルが使用するプロセスです。この状況は、Linux カーネルがプロセスに割り当てたメモリが多すぎるために発生します。... これは、実行中のプロセスが物理的に使用可能なメモリよりも多くのメモリを必要とすることを意味します。

関連情報