新闻动态

Docker怎么限制容器可用的内存

发布日期:2021-03-29 16:47 | 文章来源:网络

站群高防大带宽,容器进程

海外主机将与你分享Docker如何限制容器的可用内存。希望你看完这篇文章有所收获。大家一起讨论一下。

为什么要限制容器对内存的使用?

限制容器过多使用主机内存非常重要。对于linux主机,一旦内核检测到没有足够的内存来分配,它就会抛出oome,并开始杀死一些进程来释放内存空间。不幸的是,任何进程都可能成为内核的目标,包括docker守护程序和其他重要程序。更危险的是,如果一个支撑系统运行的重要进程被扼杀了,整个系统就完蛋了!这里我们考虑一个常见的场景,大量的容器消耗了主机的内存,oome触发后系统内核立即开始杀死进程释放内存。如果内核杀死的第一个进程是docker守护进程呢?结果是所有容器都不工作,这是不能接受的!

为了解决这个问题,docker试图通过调整docker守护进程的oom优先级来缓解这个问题。在选择要杀死的进程时,内核会给所有进程打分,直接杀死得分最高的进程,然后是下一个。当docker守护进程的oom优先级降低时,docker守护进程的评分不仅会低于容器进程,还会低于其他进程。这样,docker守护进程就安全多了。

我们可以通过以下脚本直观地查看当前系统中所有进程的分数:

一个

2美元docker run-it-RM-m 300m-memory-swap=300m u-stress/bin/bash # stress-VM 1-VM-bytes 500m

演示中容器的物理内存限制在300m,但流程想申请500m的物理内存。由于没有可用的交换,该进程被oom kill直接终止。如果有足够的交换,程序至少可以正常运行。

我们可以使用-oom - oom-kill-disable选项强行阻止oom kill的发生,但我认为oom kill是一种健康的行为,为什么要阻止呢?

除了限制可用交换的大小,您还可以按容器设置使用交换的紧急程度,这与主机的交换程度相同。默认情况下,容器继承主机的交换性。如果要显式设置容器的交换值,可以使用- memory-swappiness选项。

看了这篇文章,相信你对“Docker如何限制容器的可用内存”有一定的了解。如果你想了解更多,请关注海外主机。谢谢你的阅读!

Tags:站群高防大带宽,容器进程,Docker怎么限制容器可用的内存

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部