当前位置: 首页 > news >正文

docker资源限制

默认情况下,容器没有资源使用限制,可以使用主机内核调度程序允许的尽可能多的资源
Docker提供了控制容器使用资源的方法,可以限制容器使用多少内存或CPU等
docker info命令可以查看内核中的某项特性警告(在输出结尾处)

修改内核参数 /etc/default/grub
vim /etc/default/grub

OOM(Out of Memory Exception)

若没有足够的内存来执行其他重要的系统任务,将会抛出OOM,随后系统会开始杀死进程以释放内存,凡是运行在宿主机的进程都有可能被kill
产生OOM异常时,Dockerd尝试通过调整Docker守护程序的OOM优先级来减轻这些风险,但是容器的OOM优先级并未调整,这使得容器被杀死可能性更大
不推荐通过守护程序或容器上手动设置--oom-score-adj为极端负数,或通过在容器上设置--oom-kill-disable来绕过这些安全措施

OOM优先级机制

linux会为每个进程算一个分数,最终将分数最高的kill
/proc/PID/oom_score_adj
范围为-1000到1000,值越高容易被宿主机kill掉,如果将该值设置为-1000,则进程永远不会被kill
/proc/PID/oom_adj
范围为-17到+15,取值越高越容易被干掉,如果是-17,则表示不能被kill
/proc/PID/oom_score
这个值是系统综合进程的内存消耗量、CPU时间和oom_adj计算出的进程得分,消耗内存越多得分越高,容易被宿主机kernel强制杀死

stress-ng压力测试工具

stress-ng是一个压力测试工具,可以通过软件仓库进行安装,也提供了docker版本的容器

stress-ng安装

软件包安装

Centos:yum -y install stress-ng
Ubuntu:apt -y install stress-ng

容器方式安装

docker pull lorel/docker-stress-ng

stress-ng 使用

docker run -it --rm lorel/docker-stress-ng
格式:stress-ng [OPTION [ARG]]

容器内存限制

Docker可以强制执行硬件内存限制,即只允许容器使用给定的内存大小
Docker也可以执行非硬性内存限制,即容器可以使用尽可能多的内存

内存相关选项

b k m g 表示字节,千字节,兆字节或千兆字节
-m --memory=    
容器可以使用的最大物理内存量,硬限制,此选项最小允许值为
4m
--memory-swap    
允许此容器交换到磁盘的内存量 , 必须先用 -m 对内存限制才可以使用 ,
细说明如下
-- memory -swappiness  
设置容器使用交换分区的倾向性,值越高表示越倾向于使用 swap
区,范围为 0-100 0 为能不用就不用, 100 为能用就用, N 表示内存使
用率达到 N% 时,就会使用 swap 空间
-- memory -reservation
允许指定小于 --memory 的软限制 ,当 Docker 检测到主机上的争用或
内存不足时会激活该限制,如果使 -- memory-reservation ,则必须将
其设置为低于 --memory 才能使其优先生效。 因为它是软限制,所以
不能保证容器不超过限制
-- kernel - memory
容器可以使用的最大内核内存量,最小为 4m ,由于内核内存与用户空
间内存隔离,因此无法与用户空间内存直接交换,因此内核内存不足的
容器可能会阻塞宿主机资源,这会对主机和其他容器或者其他服务进程
产生影响,因此不建议设置内核内存大小
-- oom - kill - disable
默认情况下,如果发生内存不足( OOM )错误,则内核将终止容器中
的进程。要更改此行为,请使用该 -- oom - kill - disable 选项。建议仅在
设置了该 - m/ -- memory 选项的容器上禁用 OOM 。如果 - m 未设置该标
志,则主机可能会用完内存,内核可能需要终止主机系统的进程以释放
内存

相关文章:

  • 【matlab】Matlab三维绘图指南
  • 使用Python实现发送Email电子邮件【第19篇—python发邮件】
  • SolidWorks中的InsertCombineFeature
  • 【C++进阶02】多态
  • Go 泛型之类型参数
  • PyTorch之线性回归
  • 第1课 配置FFmpeg+OpenCV开发环境
  • Kioptrix-3
  • 08 2024考研408-数据结构 第八章-排序学习笔记
  • 【51单片机系列】C51中的中断系统扩展实验
  • Linux ContOS7 日志管理(rsyslog)
  • Ubuntu 常用命令之 chown 命令用法介绍
  • STM32的以太网外设+PHY(LAN8720)使用详解(7):以太网数据接收及发送测试
  • ChatGPT4与ArcGIS Pro3助力AI 地理空间分析和可视化及助力科研论文写作
  • 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数
  • MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题
  • myspl左外连
  • Amazon Toolkit — CodeWhisperer 使用
  • 【Linux】进程周边007之进程控制
  • 麒麟V10 ARM 离线生成RabbitMQ docker镜像并上传Harbor私有仓库
  • 王受文已任全国工商联党组成员
  • 2025中国品牌日上海践行活动启动,将建设品牌生态交互平台
  • 讲座预告|全球贸易不确定情况下企业创新生态构建
  • 海关总署统计分析司司长:4月进出口增速较一季度加快4.3个百分点
  • 迪拜金融市场CEO:2024年市场表现出色,超八成新投资者来自海外
  • 5月12日至13日北京禁飞“低慢小”航空器