范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Docker资源限制和如何监控

  容器比较强大的地方就是使用方便,强大的隔离性,但是生产上往往需要做到保护,比如a容器不能对于b容器造成任何影响,比如a容器资源占用太高,导致b容器无法响应,获取a容器down机影响宿主机或其他容器等等,都是不允许的,所以容器隔离技术就解决了这些问题! 1、cgroup简介
  cgroup是Control Groups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被LXC、docker等很多项目用于实现进程资源控制。cgroup将任意进程进行分组化管理的 Linux 内核功能。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为cgroup子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。 cpu:使用调度程序为cgroup任务提供cpu的访问。 cpuacct:产生cgroup任务的cpu资源报告。 cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。 devices:允许或拒绝cgroup任务对设备的访问。 freezer:暂停和恢复cgroup任务。 memory:设置每个cgroup的内存限制以及产生内存资源报告。 net_cls:标记每个网络包以供cgroup方便使用。 ns:命名空间子系统。 perf_event:增加了对每group的监测跟踪的能力,即可以监测属于某个特定的group的所有线程以及运行在特定CPU上的线程。
  目前docker只是用了其中一部分子系统,实现对资源配额和使用的控制。 2、docker如何限制的
  使用的是stress镜像压测 :https://hub.docker.com/r/jfusterm/stress docker pull jfusterm/stress1、内存限制
  选项
  描述
  -m  ,--memory
  内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
  --memory-swap
  内存+交换分区大小总限制。格式同上。必须必  -m  设置的大
  --memory-reservation
  内存的软性限制。格式同上
  --oom-kill-disable
  是否阻止 OOM killer 杀死容器,默认没设置
  --oom-score-adj
  容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0
  --memory-swappiness
  用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数
  --kernel-memory
  核心内存限制。格式同上,最小为 4M
  为了压测我们选择一个容器
  1、只设置 -m   参数,可以发现当限制内存在128m  时,我们还是可以分配128m  的,所以-m并不是全部的限制   ~ docker run -it --rm -m 128m  jfusterm/stress --vm 1 --vm-bytes 128m -t 5s stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: info: [1] successful run completed in 5s
  当我们继续增加到原来的两倍,发现运行失败    ~ docker run -it --rm -m 128m  jfusterm/stress --vm 1 --vm-bytes 256m -t 5s stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: FAIL: [1] (415) <-- worker 6 got signal 9 stress: WARN: [1] (417) now reaping child worker processes stress: FAIL: [1] (421) kill error: No such process stress: FAIL: [1] (451) failed run completed in 1s
  当我们设置为 250m  ,发现运行成功   ~ docker run -it --rm -m 128m  jfusterm/stress --vm 1 --vm-bytes 250m -t 5s stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: info: [1] successful run completed in 5s
  2、设置 --memory   和--memory-swap   参数
  设置 128 & 128 ,分配 127时OK的,    ~ docker run -it --rm --memory 128m  --memory-swap 128m jfusterm/stress --vm 1 --vm-bytes 127m -t 5s stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: info: [1] successful run completed in 5s
  设置128 & 128 ,分配128 失败    ~ docker run -it --rm --memory 128m  --memory-swap 128m jfusterm/stress --vm 1 --vm-bytes 128m -t 5s stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: FAIL: [1] (415) <-- worker 7 got signal 9 stress: WARN: [1] (417) now reaping child worker processes stress: FAIL: [1] (421) kill error: No such process stress: FAIL: [1] (451) failed run completed in 1s2、如何查看容器真实内存[root@centos-linux ~]# docker run --rm -it -m 128m alpine /bin/sh / # free -m               total        used        free      shared  buff/cache   available Mem:           1980         266        1143          21         569        1559 Swap:             0           0           0
  经常遇到这种问题,容器内的内存和真实内存其实是不一致的,原因是啥?
  这是由于docker产生的容器的隔离性不足造成的。docker创建容器时,会为容器提供一些必要的目录和文件,比如/proc下的若干文件。其中/proc/meminfo文件docker并没有直接提供其生成,而是将宿主机的/proc/meminfo挂载给了容器。因此容器看到的/proc/meminfo与宿主机的/proc/meminfo的内容是一样的。而free命令也不过是查看该文件的信息而已。如果想增强其隔离性,可以使用lxcfs的方式。
  那如何解决了?
  docker其实本身使用 cgroup  进行隔离,其实它监控也只能监控cgroup,本机是CentOSLinuxrelease 7.9.2009(Core)  [root@centos-linux ~]# ls /sys/fs/cgroup/memory/docker/9fc278a2cab2bde9f2aa10fb8eb58732f4d1f3ce0f988ed64cac4b4616a585f1/ cgroup.clone_children           memory.kmem.tcp.max_usage_in_bytes  memory.oom_control cgroup.event_control            memory.kmem.tcp.usage_in_bytes      memory.pressure_level cgroup.procs                    memory.kmem.usage_in_bytes          memory.soft_limit_in_bytes memory.failcnt                  memory.limit_in_bytes               memory.stat memory.force_empty              memory.max_usage_in_bytes           memory.swappiness memory.kmem.failcnt             memory.memsw.failcnt                memory.usage_in_bytes memory.kmem.limit_in_bytes      memory.memsw.limit_in_bytes         memory.use_hierarchy memory.kmem.max_usage_in_bytes  memory.memsw.max_usage_in_bytes     notify_on_release memory.kmem.slabinfo            memory.memsw.usage_in_bytes         tasks memory.kmem.tcp.failcnt         memory.move_charge_at_immigrate memory.kmem.tcp.limit_in_bytes  memory.numa_stat
  文件名称
  含义
  memory.usage in bytes
  已使用的内存量(包含cache和buffer)(字节),相当于linux的used_meme
  memory.limit  in  bytes
  限制的内存总量(字节),相当于linux的total_mem
  memory.failcnt
  申请内存失败次数计数
  memory.memsw.usage  in  bytes
  已使用的内存和swap(字节)
  memory.memsw.limit in bytes
  限制的内存和swap容量(字节)
  memory.memsw.failcnt
  申请内存和swap失败次数计数
  memory.stat
  内存相关状态
  查看 [root@centos-linux ~]# docker stats 9fc278a2cab2bde9f2aa10fb8eb58732f4d1f3ce0f988ed64cac4b4616a585f1 --no-stream CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT   MEM %     NET I/O       BLOCK I/O   PIDS 9fc278a2cab2   elated_panini   0.00%     560KiB / 128MiB     0.43%     1.01kB / 0B   0B / 0B     1  [root@centos-linux 9fc278a2cab2bde9f2aa10fb8eb58732f4d1f3ce0f988ed64cac4b4616a585f1]# cat memory.usage_in_bytes 573440
  所以可以看到两组数据基本一致,具体逻辑:https://github.com/opencontainers/runc/blob/v0.1.1/libcontainer/cgroups/fs/memory.go#L148
  参考:Docker容器内存监控

北京消协杀熟榜一出门就挨宰在家网购也难逃北京消协杀熟榜。针对大众关心的互联网平台杀熟问题,3月27日,北京市消费者协会发布了大数据杀熟榜单。本次北京消协的调查采用问卷调查舆情采集和体验调查3种方式,涉及14个消费者常用的电动汽车充一次电需要多少钱?现在新能源车非常火,销售在推销新能源车的时候总会说新能源车比燃油车省钱,因为充电比加油便宜多了。所以今天我们就来较个真儿,算一算电动汽车充一次电需要花费多少钱。影响电动汽车充电费用壁纸苹果最新发布会主题系列壁纸3种配色可选大家好,我是西渡科技君,喜欢我分享的壁纸的同学,请右上角关注一波所有原图已上传原图下载链接用普通版头条私信我00305即可有任何问题,请在底下评论,私信太多看不到的,见谅3种配色可你要的AirPods2代24期免息了!在苹果春季发布会前夕,Apple官网热闹无比,其中也悄悄将AirPods更新到了第2代。AirPods2想入手的小伙伴注意啦!现在登陆官网可以看到苹果的分期选项可以支持最长24期免苹果蝶形键盘第二次出现问题,新款薄膜设计仍然存在缺陷MacBookPro键盘进灰失灵的阴影依然挥之不去,2018年,苹果为第三代蝶式键盘增加一层薄膜,但并没能完全解决问题。华尔街日报作者JoannaStern27日撰写了一篇文章来展你知道哪些冷门但逆天的App?我个人喜欢捣腾手机,自己手机刷了root,也装了框架,比较冷门但实用的我推荐几个。1酷安,这是个应用软件下载和交流的软件,能搜到很多其它应用市场没有的,最重要的是一些大神会分享他们菜鸟裹裹启动全民体验官计划,日薪万元体验1小时上门取件世界上最有吸引力的工作来了日薪万元成为快递员体验官,体验1小时上门取快递。今天(3月28日),菜鸟裹裹发布全民体验官计划,公开招募裹裹快递员极速上门取件,持续提升用户在家寄件体验。一切都是缘分,小米无线车充在看到小米发布出这两个配件的时候是非常心水的,牢牢抓住用户痛点。当时本着试试看的心态去抢了这两个东西,结果中了一个充电宝,无线车充没中,当时虽然遗憾但是满足啦。然鹅过了两天,万能的世界银行的大数据,各国制造业所占该国GDP的百分比Manufacturing(valueadded)asshareofGDP。中国China29韩国SKorea28马来西亚Malaysia22德国Germany21印度尼西亚Ind特急!银联发布银联网络IIIII类银行账户开户验证业务指引卡组织银联卡组织(IDkazuzhi)日前,中国银联业管委下发紧急文件银联网络IIIII类银行账户开户验证业务指引(试行)暨开展银行开户验证业务系统改造工作的函(业管委秘20198央行回应支付新规不法分子转移诈骗资金渠道发生了很大变化近日,中国人民银行发布了关于进一步加强支付结算管理防范电信网络新型违法犯罪有关事项的通知(以下简称通知)。红星新闻3月28日曾报道重磅!个人ATM实时转账不再强制要求24小时后到账
项目Nation3DAO空投现已支持领取4月21日,数字国家项目Nation3DAO空投现已支持领取,空投Token名为NATION,一个账号空投一枚NATION(约2146美元)。据悉,NATION初始供应量为4,20mysql之表分区分区介绍一什么是分区?所谓分区,就是将一个表分成多个区块进行操作和保存,从而降低每次操作的数据,提高性能。而对于应用来说则是透明的,从逻辑上看只有一张表,但在物理上这个表可能是由多如果月球炸裂,地球会荡然无存吗?科学家你有6亿个沙皇炸弹吗在浩瀚宇宙中,什么星球能算得上被人们研究得最彻底的呢?这莫过于是月球了。月球是我们登上的第一个地外星球,它有着与地球一样的壳幔核等结构。那你是否想过,如果月球发生炸裂,月球的碎片会阿斯麦CEO谈芯片短缺有大公司购买洗衣机拆芯片光刻机巨头阿斯麦CEO彼得温宁克(PeterWennink)周三用一个生动的例子描述了全球芯片短缺到了何种地步。他在该公司周三的财报电话会议上说,一家大型工业集团已经开始购买洗衣机云从科技即将成为科创板首家AI平台型上市公司中证网讯(王珞)近日,云从科技获得证监会注册批文,即将登陆上交所科创板,成为科创板首家AI平台型的上市公司。资料显示,云从科技致力于提供高效的人机协同操作系统与行业解决方案,是一家巨头爆雷?一夜暴跌超35,市值缩水超过3200亿!用户数量首次下降,俄罗斯用户流失最多,马斯克犀利点评点蓝字关注,不迷路当地时间4月20日,流媒体巨头奈飞(Netflix)股价出现崩盘式下跌。截止当日收盘,公司股价暴跌逾35,股价收报226。19美元,市值缩水超过500亿美元(折合趣头条回应停止自媒体创作平台维护将结合第三方平台提供服务Tech星球4月22日消息,趣头条发布公告称,基于长远的内容规划,将于2022年6月30日停止自媒体创作平台的服务和维护。对此,趣头条解释称,基于趣头条长远的内容生态规划,为进一步全球6G技术大会量子信息技术将用于6G时代通信系统澎湃财讯近日,由未来移动通信论坛和紫金山实验室共同主办的全球6G技术大会发布了面向6G时代的先进技术初探量子信息技术白皮书,聚焦量子信息技术在6G时代通信系统的探索与应用。6G将构vivo全新自研芯片V1登场影像性能双突破4月20日,vivo举办了vivo双芯X影像技术沟通会,会上带来了很多关于自研芯片双芯协同移动影像等方面的技术新成果,其中最为引人瞩目的就是全新自研芯片V1。谈起自研芯片,vivoOPPOK10系列硬件配置曝光,首发天玑8000MaxOPPOK系列一直以来都是OPPO品牌高性价比千元机的代名词,最新消息透露OPPO将在近期发布升级换代产品OPPOK10系列机型。并且首发联发科天玑8000Max。目前从爆料消息得除了1亿像素华为nova9SE还有这些亮点足也够吸引人华为nova系列自诞生以来,就凭借高颜值的时尚潮流设计以及同级出众的影像功能赢得年轻用户的青睐,更是成为很多年轻人换机的首选。上月16日,华为再次发力给广大年轻用户带来nova9家