集群运维大宝剑系列篇
写在前面
松鼠哥的ceph专业课程上线啦!
面向新手同学,从0实战,全面入门ceph安装部署与运维,有需要的同学赶紧联系松鼠哥订购吧:
最近特别忙。。。
近期有个生产环境出故障了,就是那个低配置的环境,删除pool就会宕机那个,对对对~又是它出问题了
这些节点本身配置比较低,集群节点与业务进程合部,而且,业务进程非常坑!这是一种视频流处理程序,特点是实时处理流数据通过s3写入集群,而一旦写入集群不流畅,产生积压,堆积的数据会直接存放在内存中,更要命的是,这种内存使用默认是无限制的,于是在短时间内,内存被快速榨干,系统无法连上,只能通过手工重启的方式恢复
发生险情后,立即进行排查,发现有1个节点还没有完全僵死,还能连上,只是非常卡,现象是
- 1、内存被完全耗尽,系统swap被占用超过80%,操作非常卡顿
- 2、负载贼高,16核的机器负载达到120+
- 3、除了业务的进程占用内存高之外,还有一个进程占用内存也很高,rsyslogd
- 4、osd进程死的死,不死的也无法与外界通信
经过排查,业务进程占用超高内存是因为发生写入阻塞,发生写入阻塞的原因是什么呢?排查监控日志判断是内存不足,导致osd缓慢,写入延迟开始增大,发生业务阻塞,然后内存耗尽,于是开启了链式反应
内存不足的原因没有查到,之前加了监控的进程没有明显的内存问题,所以针对内存占用高的rsyslogd进程进行重启后,内存降下来了,集群恢复正常,然鹅,过了一段时间,rsyslogd进程的内存又不安份地快速增长了,这次决定深入排查
排查过程
查看进程状态,发现有相关报错信息
1 | [root@server07 tanweijie]# systemctl status rsyslog.service |
调查内存
1 | [root@server07 tanweijie]# /usr/bin/cat /proc/5011/status|/usr/bin/grep -w 'VmRSS' |
对于内存已经比较吃紧的系统来说,接近7G的占用还是不能接受的,此前故障发现rsyslogd占用超过15G…
既然报了空间不足的错,看了下系统目录,没有发现空间不足~看了下监控日志,也没有发现这段时间有磁盘空间占满的情况
1 | [root@server07 tanweijie]# df -h |
解决办法
一轮google后,基本没有找到有用的信息,解决办法倒是找到不少,其中最简单的莫过于限制内存的使用(如果有读者朋友知道原因,欢迎指教)
下面我们通过限制这个rsyslog.service的最大使用内存,来保护我们的节点,这里又不得不再吹一次systemd的强大,记得在早前我们将进程绑定到指定的cpu运行的调研中,发现可以在service文件中加入参数CPUAffinity
来指定程序运行的cpu,这里我们再次使用相同的套路,systemd支持的service配置再一次强大,相关参数:
可以看到,我们不仅可以限制RSS使用,还可以限制CPU、stack段大小、data段大小等,十分强大
另外,根据redhat的官方文档,还可以使用诸如CPUQuota=20%
、MemoryLimit=500M
等方式来实现进程的资源控制,不过这里我们未对这部分参数进行测试
加入这些限制的操作很简单
首先打开进程的service,一定要加--full
,否则打开后是空白文件
1 | [root@server07 tanweijie]# systemctl edit rsyslog.service --full |
然后,加入参数,这里我们限制rsyslogd进程使用最大物理内存为1G,因此加入LimitRSS=1073741824
到service域中,cat一下看看
1 | [root@server07 tanweijie]# systemctl cat rsyslog.service |
ok,重新载入并重启进程
1 | [root@server07 tanweijie]# systemctl daemon-reload |
最后,我们再次确认RSS限制是否生效
1 | [root@server07 tanweijie]# ps -ef|grep rsyslog |
可以看到,Max resident set
已经设置为1G,默认是unlimited的。
运行一段时间后,rsyslogd进程未见内存异常占用
总结
rsyslog进程此前我没有关注过,没有发现这个进程会占用大量内存的情况,其他环境也没有发现,所以很是奇怪。通过这次事件的解决,我们又掌握了精细化控制进程资源使用的手段,在service文件中设置指定参数,简单有效
参考资料
- 本文作者: 奋斗的松鼠
- 本文链接: http://www.strugglesquirrel.com/2019/09/06/集群运维大宝剑之内存耗尽排查/
- 版权声明: 本博客所有文章除特别声明外,创作版权均为作者个人所有,未经允许禁止转载!