溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker怎么限制容器可用的內(nèi)存

發(fā)布時(shí)間:2021-03-09 10:23:46 來(lái)源:億速云 閱讀:249 作者:小新 欄目:服務(wù)器

小編給大家分享一下Docker怎么限制容器可用的內(nèi)存,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

為什么要限制容器對(duì)內(nèi)存的使用?

限制容器不能過(guò)多的使用主機(jī)的內(nèi)存是非常重要的。對(duì)于 linux 主機(jī)來(lái)說(shuō),一旦內(nèi)核檢測(cè)到?jīng)]有足夠的內(nèi)存可以分配,就會(huì)扔出 oome(out of memmory exception),并開(kāi)始?xì)⑺酪恍┻M(jìn)程用于釋放內(nèi)存空間。糟糕的是任何進(jìn)程都可能成為內(nèi)核獵殺的對(duì)象,包括 docker daemon 和其它一些重要的程序。更危險(xiǎn)的是如果某個(gè)支持系統(tǒng)運(yùn)行的重要進(jìn)程被干掉了,整個(gè)系統(tǒng)也就宕掉了!這里我們考慮一個(gè)比較常見(jiàn)的場(chǎng)景,大量的容器把主機(jī)的內(nèi)存消耗殆盡,oome 被觸發(fā)后系統(tǒng)內(nèi)核立即開(kāi)始?xì)⑦M(jìn)程釋放內(nèi)存。如果內(nèi)核殺死的第一個(gè)進(jìn)程就是 docker daemon 會(huì)怎么樣?結(jié)果是所有的容器都不工作了,這是不能接受的!

針對(duì)這個(gè)問(wèn)題,docker 嘗試通過(guò)調(diào)整 docker daemon 的 oom 優(yōu)先級(jí)來(lái)進(jìn)行緩解。內(nèi)核在選擇要?dú)⑺赖倪M(jìn)程時(shí)會(huì)對(duì)所有的進(jìn)程打分,直接殺死得分最高的進(jìn)程,接著是下一個(gè)。當(dāng) docker daemon 的 oom 優(yōu)先級(jí)被降低后(注意容器進(jìn)程的 oom 優(yōu)先級(jí)并沒(méi)有被調(diào)整),docker daemon 進(jìn)程的得分不僅會(huì)低于容器進(jìn)程的得分,還會(huì)低于其它一些進(jìn)程的得分。這樣 docker daemon 進(jìn)程就安全多了。

我們可以通過(guò)下面的腳本直觀的看一下當(dāng)前系統(tǒng)中所有進(jìn)程的得分情況:

?

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

Docker怎么限制容器可用的內(nèi)存

demo 中容器的物理內(nèi)存被限制在 300m,但是進(jìn)程卻希望申請(qǐng)到 500m 的物理內(nèi)存。在沒(méi)有 swap 可用的情況下,進(jìn)程直接被 oom kill 了。如果有足夠的 swap,程序至少還可以正常的運(yùn)行。

我們可以通過(guò) --oom-kill-disable 選項(xiàng)強(qiáng)行阻止 oom kill 的發(fā)生,但是筆者認(rèn)為 oom kill 是一種健康的行為,為什么要阻止它呢?

除了限制可用 swap 的大小,還可以設(shè)置容器使用 swap 的緊迫程度,這一點(diǎn)和主機(jī)的 swappiness 是一樣的。容器默認(rèn)會(huì)繼承主機(jī)的 swappiness,如果要顯式的為容器設(shè)置 swappiness 值,可以使用 --memory-swappiness 選項(xiàng)。

看完了這篇文章,相信你對(duì)“Docker怎么限制容器可用的內(nèi)存”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

原文鏈接:http://www.cnblogs.com/sparkdev/p/8032330.html

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI