生产集群出现osd节点内存溢出的现象,现象为:现有集群其他节点内存使用率都为90%左右的情况下,重启1台ceph-osd.target,会导致集群在重平衡时,导致其他osd节点内存上升,系统宕机,从而导致整个集群不可用;
操作方法:
1.系统层面cgroup限制内存,脚本如下,60G为osd进程使用内存,系统内存预留32G:
$cat cgroup.sh
#!/bin/bash
if [ ! -d /sys/fs/cgroup/memory/OSD ] ; then
mkdir /sys/fs/cgroup/memory/OSD
echo “60G” > /sys/fs/cgroup/memory/OSD/memory.limit_in_bytes
fi
for i in $(ps -eo pid,cmd | grep ceph-osd | grep cluster | grep -v grep | awk ‘{ print $1 }’) ; do echo $i > /sys/fs/cgroup/memory/OSD/tasks ; done
2.执行脚本
$ chmod +x cgroup.sh
$ systemctl restart ceph-osd.target
$ bash cgroup.sh
3.最好使用contab,定时检查
$cat check_mem_kill_osd.sh
#!/bin/bash
USE_MEM=$(free -mh | grep Mem | awk -F ’ ’ ‘{print $3}’ | awk