docker swarm集群防止机器资源被耗尽
docker swarm集群防止机器资源被耗尽
实现方式说明
使用systemd配置cgroup限制docker的最大内存使用量以及最大cpu使用量
实际操作
首先,查看cpu核心数
cat /proc/cpuinfo | grep processor | wc -l
在这里,假设机器的核心数为2,计划保留0.25的cpu时间,所以cpu时间限制取值为175%
然后,查看机器内存大小
cat /proc/meminfo | grep MemTotal | awk '{printf "%.2fG\n",$2/1024/1024 }'
这里取值为7.25G,计划保留1G,所以内存限制取值为6.25G
注意,设置了systemd的MemoryMax后,若内存使用量超过限制,将会造成进程被kill掉
编辑docker配置
vim /etc/docker/daemon.json
加入以下配置
"exec-opts" : ["native.cgroupdriver=systemd"],
"cgroup-parent": "docker-limit.slice"
编辑systemd slice文件,应用配置并重启docker
vim /etc/systemd/system/docker-limit.slice && systemctl daemon-reload && systemctl enable docker-limit.slice && systemctl start docker-limit.slice && systemctl restart docker
[Unit]
Before=slices.target
[Slice]
CPUAccounting=true
MemoryAccounting=true
CPUQuota=175%
MemoryHigh=6G
MemoryMax=6.25G
[Install]
WantedBy=multi-user.target