当前位置:首页 > 服务端 > docker 部署项目抛出OOM异常 参数配置

docker 部署项目抛出OOM异常 参数配置

1、docker限制内存,非常重要!
2、限制内存的方式(放一个别人写的修改内存的步骤):

方法一:静态修改 -m
-m参数:限制docker容器最大使用内存

例如:$ docker run -it -m 300M --memory-swap -1 --name con1 u-stress /bin/bash
上面的 docker run 命令中通过 -m 选项限制容器使用的内存上限为 300M。
同时设置 memory-swap 值为 -1,它表示容器程序使用内存的受限,而可以使用的 swap 空间使用不受限制(宿主机有多少 swap 容器就可以使用多少)。

方法二:动态修改 docker update
docker update 动态修改docker容器内存

例如:把一个运行着gitlab 的容器内存限制在2048M以内
docker update --memory 2048m --memory-swap -1 gitlab

 

docker run -d -i -t -m 256M --memory-swap 512M --name centos centos /bin/bash

  -m, -- memory
# 内存限制大小,单位可以为 b,k,M,g;最小为4M

--memory-swap
# 内存+交换分区大小总限制

--memory-reservation 
# 预留内存大小;容器在宿主机最小占用内存; --oom-kill-disable # out-of-memory 内存溢出;限制kill容器进程,默认没设置 --oom-score-adj # 容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0 --memory-swappiness # 用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数 --kernel-memory 核心内存限制,最小为 4M。

1、memory 设置容器内存大小;

--memory-swap 不是交换分区,而是 memory + swap 的大小;
容器的交换分区 swap = memory-swap - memory

2、Docker 默认容器交换分区的大小和内存相同

memory-swap 不设置 或者设置为 0 ;
容器的交换分区 swap 大小就是 memory 的小大;
容器的进程使用最大内存 = memory + swap

3、memory-swap 设置

当 memory-swap 设置为 -1 时;
容器内存大小为 memory 设置的大小;
交换分区大小为宿主机 swap 大小;
容器进程能使用的最大内存 = memory + 宿主机 swap 大小;

4、内存溢出

--oom-kill-disable 
限制 kill 容器进程; (必须设置在 memory 之后才有限;)
docker run -d -i -t -m 256M --oom-kill-disable --name Centos-1 centos /bin/bash

5、核心内存 & 用户内存
核心内存和用户内存不同的地方在于核心内存不能被交换出。
不能交换出去的特性使得容器可以通过消耗太多内存来堵塞一些系统服务。

作者:YanggerTao
来源链接:https://www.cnblogs.com/yange317/p/12802103.html

版权声明:
1、Java侠(https://www.javaxia.com)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaxia.com/server/124735.html

标签: out of memory
分享给朋友:

“docker 部署项目抛出OOM异常 参数配置” 的相关文章