保證運行容器的主機有重組的內存
限制容器可以使用的內存
為主機配置 swap

好了,啰嗦了這么多,其實就是說:通過限制容器使用的內存上限,可以降低主機內存耗盡時帶來的各種風險。

壓力測試工具 stress

為了測試容器的內存使用情況,筆者在 ubuntu 的鏡像中安裝了壓力測試工作 stress,并新創建了鏡像 u-stress。本文演示用的所有容器都會通過 u-stress 鏡像創建(本文運行容器的宿主機為 CentOS7)。下面是創建 u-stress 鏡像的 Dockerfile:

FROM ubuntu:latest
RUN apt-get update && \\\\
  apt-get install stress

創建鏡像的命令為:

$ docker build -t u-stress:latest .

限制內存使用上限

在進入繁瑣的設置細節之前我們先完成一個簡單的用例:限制容器可以使用的最大內存為 300M。
-m(–memory=) 選項可以完成這樣的配置:

$ docker run -it -m 300M --memory-swap -1 --name con1 u-stress /bin/bash

下面的 stress 命令會創建一個進程并通過 malloc 函數分配內存:

# stress --vm 1 --vm-bytes 500M

通過 docker stats 命令查看實際情況:

上面的 docker run 命令中通過 -m 選項限制容器使用的內存上限為 300M。同時設置 memory-swap 值為 -1,它表示容器程序使用內存的受限,而可以使用的 swap 空間使用不受限制(宿主機有多少 swap 容器就可以使用多少)。
下面我們通過 top 命令來查看 stress 進程內存的實際情況:

上面的截圖中先通過 pgrep 命令查詢 stress 命令相關的進程,進程號比較大的那個是用來消耗內存的進程,我們就查看它的內存信息。VIRT 是進程虛擬內存的大小,所以它應該是 500M。RES 為實際分配的物理內存數量,我們看到這個值就在 300M 上下浮動??礃幼游覀円呀洺晒Φ南拗屏巳萜髂軌蚴褂玫奈锢韮却鏀盗?。

限制可用的 swap 大小

強調一下 –memory-swap 是必須要與 –memory 一起使用的。

正常情況下, –memory-swap 的值包含容器可用內存和可用 swap。所以 –memory=300m –memory-swap=1g 的含義為:

容器可以使用 300M 的物理內存,并且可以使用 700M(1G -330M) 的 swap。–memory-swap 居然是容器可以使用的物理內存和可以使用的 swap 之和!

把 –memory-swap 設置為 0 和不設置是一樣的,此時如果設置了 –memory,容器可以使用的 swap 大小為 –memory 值的兩倍。

如果 –memory-swap 的值和 –memory 相同,則容器不能使用 swap。下面的 demo 演示了在沒有 swap 可用的情況下向系統申請大量內存的場景:

$ docker run -it --rm -m 300M --memory-swap=300M u-stress /bin/bash
# stress --vm 1 --vm-bytes 500M

demo 中容器的物理內存被限制在 300M,但是進程卻希望申請到 500M 的物理內存。在沒有 swap 可用的情況下,進程直接被 OOM kill 了。如果有足夠的 swap,程序至少還可以正常的運行。

我們可以通過 –oom-kill-disable 選項強行阻止 OOM kill 的發生,但是筆者認為 OOM kill 是一種健康的行為,為什么要阻止它呢?

除了限制可用 swap 的大小,還可以設置容器使用 swap 的緊迫程度,這一點和主機的 swappiness 是一樣的。容器默認會繼承主機的 swappiness,如果要顯式的為容器設置 swappiness 值,可以使用 –memory-swappiness 選項。

總結

通過限制容器可用的物理內存,可以避免容器內服務異常導致大量消耗主機內存的情況(此時讓容器重啟是較好的策略),因此可以降低主機內存被耗盡帶來的風險。

更多關于云服務器,域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Docker如何限制容器可用的內存

登錄

找回密碼

注冊

主站蜘蛛池模板: 久久亚洲精品国产精品婷婷| 男女性高爱潮免费网站| 亚洲天天堂天堂激情性色| 亚洲老妇女一区二区三区| 国产成人无码综合亚洲日韩| 亚洲女同在线播放一区二区| 国产av第一次处破| 深夜福利资源在线观看| 国产美女在线观看大长腿| 2022亚洲男人天堂| 一亚洲一区二区中文字幕| 国产一区二区不卡在线看| 日韩中文字幕有码午夜美女| 亚洲AV无码成H人动漫无遮挡 | 国产成人亚洲综合色婷婷秒播| 2019亚洲午夜无码天堂| 日韩人妻无码精品久久久不卡| 色噜噜狠狠一区二区三区果冻| 国产成人久久综合一区| 中文无码乱人伦中文视频在线| 综合区一区二区三区狠狠| 99在线精品免费视频| 极品少妇的粉嫩小泬看片| 护士张开腿被奷日出白浆| 行唐县| 国产日产亚洲系列av| 欧美孕妇乳喷奶水在线观看| 灵山县| 强奷白丝美女在线观看| 国产无套乱子伦精彩是白视频 | 亚洲V天堂V手机在线| 国产精品国产亚洲区久久| 亚洲欧美中文字幕日韩一区二区 | 97碰碰碰免费公开在线视频| 亚州中文字幕一区二区| 亚洲免费观看在线视频| 亚洲女人天堂成人av在线| 五月综合婷婷开心综合婷婷| 国产老头多毛Gay老年男 | 成人精品天堂一区二区三区| 亚洲午夜无码久久久久蜜臀av|