Docker怎么限制容器可用的內(nèi)存
站群高防大帶寬,容器進(jìn)程
海外主機(jī)將與你分享Docker如何限制容器的可用內(nèi)存。希望你看完這篇文章有所收獲。大家一起討論一下。
為什么要限制容器對內(nèi)存的使用?
限制容器過多使用主機(jī)內(nèi)存非常重要。對于linux主機(jī),一旦內(nèi)核檢測到?jīng)]有足夠的內(nèi)存來分配,它就會拋出oome,并開始?xì)⑺酪恍┻M(jìn)程來釋放內(nèi)存空間。不幸的是,任何進(jìn)程都可能成為內(nèi)核的目標(biāo),包括docker守護(hù)程序和其他重要程序。更危險的是,如果一個支撐系統(tǒng)運(yùn)行的重要進(jìn)程被扼殺了,整個系統(tǒng)就完蛋了!這里我們考慮一個常見的場景,大量的容器消耗了主機(jī)的內(nèi)存,oome觸發(fā)后系統(tǒng)內(nèi)核立即開始?xì)⑺肋M(jìn)程釋放內(nèi)存。如果內(nèi)核殺死的第一個進(jìn)程是docker守護(hù)進(jìn)程呢?結(jié)果是所有容器都不工作,這是不能接受的!
為了解決這個問題,docker試圖通過調(diào)整docker守護(hù)進(jìn)程的oom優(yōu)先級來緩解這個問題。在選擇要?dú)⑺赖倪M(jìn)程時,內(nèi)核會給所有進(jìn)程打分,直接殺死得分最高的進(jìn)程,然后是下一個。當(dāng)docker守護(hù)進(jìn)程的oom優(yōu)先級降低時,docker守護(hù)進(jìn)程的評分不僅會低于容器進(jìn)程,還會低于其他進(jìn)程。這樣,docker守護(hù)進(jìn)程就安全多了。
我們可以通過以下腳本直觀地查看當(dāng)前系統(tǒng)中所有進(jìn)程的分?jǐn)?shù):
?
一個
2美元docker run-it-RM-m 300m-memory-swap=300m u-stress/bin/bash # stress-VM 1-VM-bytes 500m
演示中容器的物理內(nèi)存限制在300m,但流程想申請500m的物理內(nèi)存。由于沒有可用的交換,該進(jìn)程被oom kill直接終止。如果有足夠的交換,程序至少可以正常運(yùn)行。
我們可以使用-oom - oom-kill-disable選項(xiàng)強(qiáng)行阻止oom kill的發(fā)生,但我認(rèn)為oom kill是一種健康的行為,為什么要阻止呢?
除了限制可用交換的大小,您還可以按容器設(shè)置使用交換的緊急程度,這與主機(jī)的交換程度相同。默認(rèn)情況下,容器繼承主機(jī)的交換性。如果要顯式設(shè)置容器的交換值,可以使用- memory-swappiness選項(xiàng)。
看了這篇文章,相信你對“Docker如何限制容器的可用內(nèi)存”有一定的了解。如果你想了解更多,請關(guān)注海外主機(jī)。謝謝你的閱讀!
Tags:站群高防大帶寬,容器進(jìn)程,Docker怎么限制容器可用的內(nèi)存
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。