mysql docker oom_如何让docker容器不会被oomkill掉设置oomkilldisable
Docker资源限制
在默认的情况下,docker没有对容器进行硬件资源的限制,当容器负载过高时会尽肯能第占用宿主机资源。在这基础上,docker提供了针对容器的内存,CPU,IO资源的控制方式。(真正可以控制的只有内存和cpu)Docker内存控制OOME在linxu系统上,如果内核探测到当前宿主机已经没有可用内存使用,那么会抛出一个OOME(Out Of Memory Exception:内存异常 ),并且会开启killing去杀掉一些进程。一旦发生OOME,任何进程都有可能被杀死,包括docker daemon在内,为此,docker特地调整了docker daemon的OOM_Odj优先级,以免他被杀掉,但容器的优先级并未被调整。经过系统内部复制的计算后,每个系统进程都会有一个OOM_Score得分,OOM_Odj越高,得分越高,(在docker run的时候可以调整OOM_Odj)得分最高的优先被kill掉,当然,也可以指定一些特定的重要的容器禁止被OMM杀掉,在启动容器时使用 –oom-kill-disable=true指定。内存限制的部分参数-m : 指定容器内存
--memory-swap : 设置容器交换分区大小,设置交换分区必须要设置 -m:依赖前者,容器内与交换分区的关系比较特别,如下:--memory-swap--memory功能正数S正数M容器可用总空间为S,其中ram为M,swap为(S-M),若S=M,则无可用swap资源
O正数M相当于未设置swap (unset)
unset正数M若主机(Docker Host)启用了swap,则容器的可用swap为2*M
-l正数M若主机(Docker Host)启用了swap,则容器的可使用最大值主机上的所有swap空间的swap资源
注意:在容器内使用free命令可以看到的swap空间并不具有其所展现出的空间指示意义--oom-kill-disable=true : 禁止容器被oom杀掉,使用该参数要与-m一起使用
CPU的限制
默认情况下,每一个容器可以使用宿主机上的所有cpu资源,但大多数系统使用的资源调度算法是CFS(完全公平调度器),它公平调度每一个工作进程。进程分cpu密集型和io密集型两类。系统内核会实时监测系统进程,当某个进程占用cpu资源时间过长时,内核会调整该进程的优先级。
CPU资源分配策略
共享cpu资源--cpu-share: cpu资源提供给一组容器使用,组内的容器按比例使用cpu资源,当容器处于空闲状态时,cpu资源被负载大的容器占用,(按压缩方式比例分配),当空闲进行运行起来时,cpu资源会被分配到其他容器
--cpus= value : 指定 cpu的核心数量,这种方式直接限定了容器可用的cpu资源
--cpuset-cpus: 指定容器只能运行在哪个cpu核心上(绑定cpu);核心使用0,1,2,3编号;–cpu-share会随机指定cpu
启动一个容器并限制资源
启动一个centos容器,限制其内存为1G ,可用cpu数为2[root@localhost ~]# docker run --name os1 -it -m 1g --cpus=2 centos:latest bash
启动容器后,可以使用docker 的监控指令查看容器的运行状态docker top 容器名: 查看容器的进程,不加容器名即查看所有
docker stats 容器名:查看容器的CPU,内存,IO 等使用信息[root@localhost ~]# docker stats os1
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
f9420cbbd2a9 os1 45.94% 47.09MiB / 1GiB 4.60% 54.6MB / 352kB 0B / 21.1MB 3
在容器中安装docker容器压测工具 stress#先安装一些基础工具
[root@f9420cbbd2a9 /]# yum install wget gcc gcc-c++ make -y
#下载stress
[root@f9420cbbd2a9 ~]# wget http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz
#安装
[root@f9420cbbd2a9 ~]# tar zxf stress-1.0.4.tar.gz
[root@f9420cbbd2a9 ~]# cd stress-1.0.4
[root@f9420cbbd2a9 stress-1.0.4]./configure
[root@f9420cbbd2a9 stress-1.0.4]# make
[root@f9420cbbd2a9 stress-1.0.4]# make install
在容器使用stress指令进行负载压测[root@f9420cbbd2a9 ~]# stress -m 1204m --vm 2
#模拟出4个繁忙的进程消耗cpu,然后使用-m 模拟进程最大使用的内存数1024,使用--vm 指定进程数
#更多参数使用 stress --help查看
使用docker指令查看容器运行状态,可以os1容器的内存和cpu都得到了限制,即使给压测时超出了最大内存,也不会额外占用资源[root@localhost ~]# docker stats os1
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
f9420cbbd2a9 os1 127.46% 319.7MiB / 1GiB 31.22% 54.8MB / 356kB 0B / 33.6MB 9
mysql docker oom_如何让docker容器不会被oomkill掉设置oomkilldisable相关推荐
- docker tomcat mysql_Docker下Tomcat容器中使用Mysql的方法
在这里我们使用Tomcat容器来运行war包,不过作为一个网站一个程序,如果需要用到数据库的,那么Tomcat容器中如何连接Mysql呢? 已经pull了tomcat和mysql镜像,可以使用dock ...
- docker配置容器mysql启动参数_修改Docker容器启动配置参数
有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...
- 【MySQL】记录 Navicat连接 docker mysql 容器,备份docker mysql 注意事项
文章目录 Navicat连接 docker mysql 容器 定时任务备份 docker mysql ,解决 备份数据库为空 问题 Navicat连接 docker mysql 容器 确保 登录 用户 ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- docker容器mysql头文件_在Docker容器中使用MySQL数据库
开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...
- docker mysql开机自启动_Docker 学会让容器开机自启服务
广深小龙亲测重启服务器后 docker 容器没跑起来,相信有不少小伙伴在用 docker 部署容器的时候也发现每次开机服务就没有自启了,需要手动去执行把容器服务开启起来,但有没有可以让它开机自启呢?显 ...
- linux修改容器内的mysql端口映射_修改docker容器端口映射的方法
大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改.通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射. 有没有办法不保存镜像而直接修改 ...
- linux开启docker mysql_Linux服务器利用Docker快速搭建MySQL数据库
首先你要有一台Linux服务器 利用Xshell远程软件连接后就可以开始安装docker容器了. 1.第一步在Linux服务器上安装docker 2.第二步利用Docker拉取mysql镜像 Cent ...
- gogs mysql 报错_linux上Docker安装gogs私服亲测(详解)
一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...
最新文章
- Java 中序列化与反序列化
- 自定义键盘keyfere——pcsensor
- 2019ICPC(沈阳) (回文自动机+Palindrome Series优化dp)
- c语言 define 关键字,c语言中define的一个不常见的用法
- eclipse定义和修改模板
- android ssl http,Android SSL HTTP请求使用自签名证书和CA
- Python相关网站(持续更新)
- jsp错误处理页面_JSP异常处理– JSP错误页面
- APP开发者常用的4种推广渠道
- 登录GITHUB:Open your two-factor authenticator (TOTP) app or browser extension to view your authenticat
- Cadence OrCAD Capture 查找功能详细介绍
- 常见计算机名词符号读音
- Flash游戏抓取,flash网站抓取,网页游戏提取工具
- ubuntu18 配置静态IP地址(详细版)
- 一个有趣的网站:子说
- 数据库DDL数据定义语言
- 深入理解 Python yield
- Ubuntu 18.04 版本中安装mysql 8的方法
- C - Justice
- 日常工作生活中的做人做事道理[持续更新ing]
热门文章
- 在PC上安装handset版meego的qemu虚拟机
- 基于51单片机的汇编程序:六位8段数码管(共阴极)动态显示“123456”
- android 使用ios字体大小,字体大小在iOS和Android上有所不同
- 误删的文件还有办法恢复吗
- linux命令查看cpu序列号,Linux下用命令查看CPU ID以及厂家等信息
- 前端遮罩层实现_jQuery 实现的遮罩层效果
- 哪里有免费的考研计算机课程,计算机考研课程视频哪个好
- Intellij IDEA2017.3免注册码激活步骤-亲测可用
- uni-app支付宝微信支付
- 网络流二十四题之二十二 —— 火星探险问题