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

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容器内存监控

批处理框架SpringBatch,数据迁移量过大如何保证内存?概述本篇博客是记录使用springbatch做数据迁移时时遇到的一个关键问题数据迁移量大时如何保证内存。当我们在使用springbatch时,我们必须配置三个东西reader,pr小蚂蚁开启飞行模式大量出货中欢迎抢购朝气先驭礼电商平台下定到店试驾赢元气盲盒,且购车享2500元原厂充电桩才气爆棚礼门店下定限时享10倍定金翻倍电商平台下订抢666元购车红包元气心享礼奇瑞金融享最高3000元辆贴息合电视开机广告太无赖!人民日报点名,OPPO等国产品牌树立榜样电视开机广告由来已久,想必用户们对它是恨多爱少。毕竟能够真正带给用户实质性广告安利的少之又少,反而是一些电视开机广告又长有无聊,像是屏幕上的牛皮癣,关不掉跳不过,让许多用户都大吐苦ORICO7口USB3。0分线器独立开关供电更安全电子产品的发展令人惊讶,但在漫长的推陈出新过程中,难免会出现一些不兼容的地方,其中最常见的就是USB接口。为了追求轻薄,笔记本放弃了很多常见的接口,甚至直接推给只有两个usb接口的液晶广告拼接屏拼接屏目前分为曲面液晶拼接屏,液晶拼接屏等离子拼接屏DLP透明屏等,目前,可搭配拼接处理器中控式HDMI矩阵HDMI分配器等辅材达成整个系统使用,其中最新技术是可以用手机控制的HD苏宁为iPhone更换电池容量更大,一年质保8月27日,苏宁为iPhone用户提供换电池大促活动,在苏宁更换的iPhone电池容量比官方电池要大15。另外,苏宁表示,将会采购果模JQJQ充锋鲨等品牌的高品质电池,更换的价格只Python简直无所不能!在电脑上如何调用手机摄像头?教你轻松搞定看到标题,卧槽!Python好牛批实际上它真的也牛批!兄弟们用的台式电脑现在很少装摄像头的吧,笔记本就不要说话了!虽然电脑没有摄像头,不过万一要是想跟女朋友电脑来个视频啥的,但是咱想换手机再等等!这3款旗舰机快发布了,看看有你看中的没朋友们,大家好!欢迎您点开笑呵呵的小丑的文章,您的每一次浏览都是对小编最大的鼓励!事不宜迟,咱们进入本篇的正题。前段时间,有三大旗舰新机陆续发布,分别是颜值旗舰小米MIX4,性能旗手机上的5G开关为什么取消了迫于运营商压力,继华为之后多家手机厂商纷纷取消5G快捷开关,取消这个快捷开关之后意味着用户只能通过设置里寻找相应的功能。运营商为什么在意这个小小的功能?因为三大运营商也有KPI,今苹果正式开启召回,涉及iPhone12两款机型,快看有没有你的手机生活中召回最多的应该是各大汽车企业,而手机厂商的召回还是比较罕见的。主要的原因还是手机产品价格相对于汽车来说比较低廉,而且手机产品的设计缺陷带来的危害也比汽车要小很多。而最关键的是TCL的雷鸟FF1,你不知道的手机卖点26号下午,TCL旗下雷鸟科技发布新手机,雷鸟FF1。不过看完配置参数,我真的忍不住想狠狠的表扬一下这个良心公司。120Hz的高刷,别人有的我TCL也要给,让你不用再羡慕其他的高刷
新能源车定义一新能源汽车的分类1。电动汽车电动汽车包括纯电动汽车新能源车定义,新能源汽车的定义和分类混合动力电动汽车和燃料电池电动汽车。纯电动汽车是指以电池为储能单元,以电动机为驱动系统的汽车华为mate50真的要来了虽然去年发布的华为P50系列推迟发布,但只推迟了几个月。华为mate50系列最初于去年10月发布,但推迟了半年多。目前,据推测,它最有可能在6月或7月发布。即便如此,粉丝们仍然期待热点快评灯塔工厂助力制造业数字化转型2018年,为了遴选数字化制造和全球化4。0的示范者,世界经济论坛和麦肯锡咨询公司发起评选灯塔工厂(LighthouseNetwork)项目,评判标准包括是否拥有第四次工业革命的所曾经一机难求,如今降至2199元,12GB256GB一亿像素三摄抢购小米手机好像已经是几年前的事情了,如今小米旗下的手机已经无需抢购了,包括RedmiK50系列新机开售之后也快速现货,之所以会发生这种转化,是因为小米公司如今的产能已经今非昔比了估值180亿美元Blockchain。com能成为第二家在美上市的加密货币交易所吗?财联社区块链日报4月21日讯(记者徐赐豪),加密货币交易所和区块链浏览器Blockchain。com已开始与美国银行会谈,以探讨如何最快在今年进行首次公开募股(IPO)。据彭博社4商务部全国跨境电商综试区基本覆盖全国中新财经4月21日电商务部新闻发言人高峰21日在发布会上表示,目前,全国跨境电商综试区已达132个,基本覆盖全国,形成了陆海内外联动东西双向互济的发展格局。高峰表示,商务部对全国前显卡不缺货了NVIDIA中国即刻升级到RTX3070以上最近显卡市场方向大变,不再是玩家加钱买卡也买不到,而是显卡在跌价,显卡厂商在喊消费者来买显卡,甚至不惜推出各种优惠措施,比如价保到618没忍住,给iPhone13Pro升级iOS15。4。1,真实感受背景为了口罩解锁在iOS15。4出来的第一天就立马升级了,然后各种真香,但好景不长,一周后电池健康度从维持了半年的100掉到了99。个人感觉iOS15。4系统最开始的一周,不管是发改善生活环境提高生活质量环境健康家电受青睐疫情反反复复这三年,餐饮旅游文娱等产业受创严重,相应的,人们在家中停留的时间显著增加,因此对室内居家环境的健康指数愈发关注。可以说,受疫情影响,环境电器因用户需求而起应消费升级而红苹果推出ApplePay防欺诈功能,目前仅限于Visa4月21日消息,据国外媒体报道,苹果针对iPhone和AppleWatch钱包应用程序中的信用卡推出ApplePay防欺诈功能。本周二,苹果陆续向所有钱包用户发布通知,打开应用会出如何在几十到几百元的价格中,选择合适的显示器支架也许你是一个电脑发烧友,也是你是一个工作狂,又或者你是一个学生,不论你是谁,只要你经常面对电脑,就有必要为自己考虑一个显示器支架。让你在久坐的工作生活中,动动身体,舒展下筋骨。那么