OOM事件
OOM(Out Of Memory)內存不足,通常是由於某些不穩定的進程占用過多的內存造成,在Docker中稱為OOM事件,當容器使用的內存過多時就會發生OOM事件,
這個事件是由Linux內核的內存管理機制發起,並將是使用占用內存過多的容器Kill掉,保證系統的可持續運行。Linux內核為了保證系統的穩定性而將內存划分為兩大部分用戶空間與內核空間
用戶空間是提供給用戶進程所使用的內存空間。內核空間是僅提供給內核運行的空間。用戶的進程是無法訪問內核空間,而內核是可以訪問用戶空間與內核空間。
如果內核發現內存不足夠使用時開始發起OOM的狀態檢查,接着調用out-of-memory函數查找使用內存最多的進程並kill掉
在Docker的容器中默認是沒有限制資源使用的,也就是說容器獲得到CPU/內存與宿主機是一樣的,為了避免OOM事件,可以給Docker的容器作一些調整
-
通過性能測試后才放到生產環境的容器中
-
確保主機上有足夠的資源分配
-
使用SWAP(交換空間)
-
將容器轉換到有足夠內存的Docker Swarm的服務中
注意:Docker不建議手動調整--oom-score-adj與--oom-disable-kill選項來避免OOM
常見OOM現象: https://www.cnblogs.com/kongzhongqijing/articles/7283599.html