我正在測試 Ubuntu 16.04 機器如何處理記憶體不足的情況,並且有幾個掛起的作業幾乎耗盡了伺服器上的所有 RAM。昨晚下班時我仍然能夠運行正常的 bash 命令。早上(沒有人對伺服器做任何事)所有指令(ps
、free
、ls
等)都會出現以下錯誤:
-bash: fork: Cannot allocate memory
我最終能夠運行jobs
並kill %1
恢復機器。幸運的是,我保持 SSH 會話打開,因為進一步的 SSH 連線失敗(客戶端在身份驗證後根本沒有顯示命令提示字元)。
事實上,常規用戶態程式可以有效地使整個伺服器癱瘓,如果沒有現有的 SSH 會話,則必須硬重新啟動伺服器。高度關於!我的理解是,Linux(或任何作業系統,實際上)應該在整個系統達到無法使用的狀態之前終止進程以釋放 RAM。我怎麼才能讓它做到這一點?