Linux

何時根據免費輸出升級 RAM

  • September 28, 2021

我有一個在 Linux 伺服器上執行的 Java 應用程序,物理記憶體 (RAM) 分配為 12GB,我會看到一段時間內的正常使用率,如下所示。

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 問題,並且交換也被禁用。所以忽略了這兩點。困擾我的一點是可用記憶體小於零,我需要澄清一下

問題:

如果available接近0,它會導致系統崩潰嗎?

這是否意味著當可用記憶體減少時我需要升級 RAM?

應該在什麼基礎上分配/增加 RAM 記憶體?

對於 RAM 記憶體分配,我們是否有任何需要遵循的官方建議/指南?

如果available接近0,它會導致系統崩潰嗎?

在我的一台伺服器上進行測試時,我載入了幾乎滿的記憶體,如下所示

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 核心為其程序分配了過多的記憶體。…這意味著正在執行的程序需要比物理可用更多的記憶體。

如果available接近0,它會導致系統崩潰嗎?

現代廣泛使用的作業系統可以處理這種情況,所以,不,系統不會正常崩潰,儘管它可能變得很慢,你將無法實際使用它。

這是否意味著當可用記憶體減少時我需要升級 RAM?

您的可用 RAM 確實太低,它可能會導致程序被從 RAM 中逐出。您可能應該添加更多 RAM。

應該在什麼基礎上分配/增加 RAM 記憶體?

如果您的性能受到影響(例如,由於過多的 SWAP 使用而導致磁碟抖動),或者您因為沒有足夠的 RAM 來完成任務而無法完成工作。

對於 RAM 記憶體分配,我們是否有任何需要遵循的官方建議/指南?

沒有,我知道。每個人的 RAM 要求都不同。如果我們談論 2021 年,現代作業系統、桌面環境和 Web 瀏覽器,4GB 的 RAM 是絕對最低的,但我不建議少於 8GB。最後,這取決於您的工作流程,沒人知道。在某些領域,人們已經擁有配備 128GB RAM 的工作站(影片和圖像編輯、3D 渲染、數學/化學/物理/工程計算和 AI)。

引用自:https://unix.stackexchange.com/questions/670800