2020-05-21 19:51:13
OOM(Out Of Memory)内存不足,通常是由于某些不稳定的进程占用过多的内存造成,在Docker中称为OOM事件,当容器使用的内存过多时就会发生OOM事件,这个事件是由Linux内核的内存管理机制发起,并将是使用占用内存过多的容器Kill掉,保证系统的可持续运行。Linux内核为了保证系统的稳定性而将内存划分为两大部分用户空间与内核空间
用户空间是提供给用户进程所使用的内存空间。内核空间是仅提供给内核运行的空间。用户的进程是无法访问内核空间,而内核是可以访问用户空间与内核空间。在Linux内存管理机制中还存在一个定时任务,检查计算机的内存是否足够使用,分别收集以下几个指标
Total page cache as page cache is easily reclaimed Total free pages because they are already available Total free swap pages as userspace pages may be paged out Total pages managed by swapper_space although this double-counts the free swap – pages. This is balanced by the fact that slots are sometimes reserved but not used Total pages used by the dentry cache as they are easily reclaimed Total pages used by the inode cache as they are easily reclaimed如果内核发现内存不足够使用时开始发起OOM的状态检查,接着调用out-of-memory函数查找使用内存最多的进程并kill掉 oom
在Docker的容器中默认是没有限制资源使用的,也就是说容器获得到CPU/内存与宿主机是一样的,为了避免OOM事件,可以给Docker的容器作一些调整
通过性能测试后才放到生产环境的容器中确保主机上有足够的资源分配
使用SWAP(交换空间)
将容器转换到有足够内存的Docker Swarm的服务中
注意:Docker不建议手动调整–oom-score-adj与–oom-disable-kill选项来避免OOM。
Docker命令行参考(17) – Docker events从服务器获取实时事件
02-14
Docker使用示例(3) – 调试容器
06-16
Docker使用示例(4) – 清理容器和镜像
06-10
Docker命令行参考(11) – Docker load从tar归档文件或STDIN导入镜像
07-20
Docker命令行参考(14) – Docker attach附着到一个运行中的容器
07-19
Docker命令行参考(26) – Docker stats实时显示容器资源使用统计
06-21
Docker命令行参考(4) – Docker inspect显示容器或镜像相关信息
07-19
Docker命令行参考(6) – Docker commit提交容器的更改创建新镜像
07-15
Docker安装配置tomcat jdk
06-21
Docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀
06-26
Ubuntu 16.04使用Docker部署WordPress
06-13
使用 Docker 搭建 Tomcat 运行环境
07-24
Android按钮单击事件的五种实现方式
04-22
Ideapad Y450/Y550/Y650 一键影音功能的介绍及应用
07-21
Lenovo settings下载及使用介绍
07-06
Linux Crontab定时任务必备招式介绍
06-17
Linux文件查看/编辑方法介绍
07-17
SaltStack事件驱动(1) – 监视事件
03-01
SaltStack事件驱动(4) – event reactor
03-23
Thinkvision LT2934z显示器自带的摄像头使用方法介绍
06-27