【Docker】限制已运行容器的Cpu和内存

docker限制已运行容器的Cpu和内存

本文首发于 慕雪的寒舍

1.问题描述

最近云服务器的内存经常不够用,而且是莫名其妙的增多,在腾讯云的控制台里面看,4g的内存占用了3.2g,就卡到连ssh都连不上了

PS: 已换过网络和设备,确认不是网络问题导致无法ssh

img

实在没辙了,只能把我的几个不热门的kook-bot移植到replit白嫖,再限制一下lsky图床docker镜像的内存用量

其实主要是nsfw-api的内存用量,我发现有人故意给我的图床上传h图。lsky后台由于鉴黄不通过,不允许上传,也看不到是谁干的。隔这压力测试呢?

我的图床基本只对自己的博客使用。开放游客上传,也只是方便大家临时上传一些图片,还请大家手下留情!!!😥

这个操作我做了几次,也算是一个高频操作了。在此记录一下如何更改一个正在运行中容器的内存限制

2.修改内存限制

先使用ps命令查看当前容器和对应的id

docker ps

可以看到,lsky图床和nsfw的镜像分别是第二个和第三个

image-20230306184202020

再用stats命令查看当前的状态

docker stats

image-20230306184518474

可以看到,图床的内存没有进行限制,nsfw的内存已经被限制到了618mb,当前已用565mb,基本要满了

重启一下容器,发现初始化的时候只需要100mb左右的内存,合计着现在就有人在往图床里面上传图片?🤣🤣🤣

image-20230306184437446

这怎么行,直接给它内存限制干到512mb,能省一点内存是一点,不能因为图床导致我服务器卡死。

修改限制,要使用的是container update命令

参考文档

名称,简写默认值描述
–blkio-weight0阻塞IO(相对权重),介于101000之间,或0禁用(默认为0)
–cpu-period0限制CPU CFS(完全公平的调度程序)周期
–cpu-quota0限制CPU CFS(完全公平的调度程序)配额
–cpu-rt-period0限制CPU实时周期(以微秒为单位)
–cpu-rt-runtime0以微秒为单位限制CPU实时运行时间
–cpu-shares, -c0CPU份额(相对权重)
–cpuset-cpus允许执行的CPU(0-3,0)
–cpuset-mems允许执行的内存率(0-3,0.1)
–kernel-memory内核内存限制
–memory, -m内存限制
–memory-reservation内存软限制
–memory-swap交换限制等于内存加交换:-1以启用无限制的交换
–restart重新启动在容器退出时应用的策略

模板如下

docker container update 容器名 --memory="2g"  --memory-swap="-1"

上面的命令会限制容器的内存为2gb,交换内存设置为-1(以启用无限制的交换)

比如我现在想修改nsfw容器的内存限制,应该如下操作

docker container update nsfw-api --memory="0.5g" 

然后发现报错了

Error response from daemon: Cannot update container 418fc2a79fa7ad2e637babe17424ee60e9027ef4a7fada3f279864e76bdaaa10: Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same time

大概意思是让我们同时更新交换内存

docker container update nsfw-api --memory="0.5g"  --memory-swap="-1"

现在就ok了,执行成功会显示镜像的名字

nsfw-api

stats看一下,发现已经修改成功了

docker stats

image-20230306185809744

修改其他容器的效果也是一样的,目的已经达到啦!

3.修改cpu限制

下面的命令意思是限制容器只能使用主机上两个cpu

docker container update  容器名 --cpus=2

但我没有理解这个两个cpu是什么含义。考虑到大部分时期,cpu负载都不会很大,暂时先不设置这个了

https://www.cnblogs.com/sparkdev/p/8052522.html

https://zhuanlan.zhihu.com/p/388012843

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕雪华年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值