一次线上zabbix server 挂掉的思考

举报
技术火炬手 发表于 2019/03/11 10:59:47 2019/03/11
【摘要】 突然间发现zabbix 挂了,咋发现的呢?报警的世界突然安静了,你就会觉得不妥了。这是运维人员的通病,有报警嫌烦,没报警心里会不安。

突然间发现zabbix 挂了,咋发现的呢?报警的世界突然安静了,你就会觉得不妥了。这是运维人员的通病,有报警嫌烦,没报警心里会不安。

1,图形界面上确实显示zabbix server is not running 

2,排查zabbix server 日志

tail /var/log/zabbix/zabbix_server.log 

发现有如下报警:

   zabbix_server [22890]: cannot open log: cannot create semaphore set: [28] No space left on device
   zabbix_server [22894]: cannot open log: cannot create semaphore set: [28] No space left on device
   zabbix_server [22898]: cannot open log: cannot create semaphore set: [28] No space left on device
   zabbix_server [22902]: cannot open log: cannot create semaphore set: [28] No space left on device
   zabbix_server [22907]: cannot open log: cannot create semaphore set: [28] No space left on device

3, 搜索一下发现是因为给系统配置的共享内存值不够,如何解决这个问题呢?需要分两步解决。

第一步:优化系统的kernel.sem 的配置参数怎么查看及四个对应参数的代表着个啥?

 cat /proc/sys/kernel/sem 
    250     32000   32      128

250       SEMMSL    max semaphores per array     信号集容纳最大信号数量   
32000     SEMMNS    max semaphores system wide   所有信号的最大数量 
32        SEMOPM    max ops per semop call     调用单个信号集中最大信号数量 
128       SEMMNI    max number of arrays         信号集的最大值

信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。Semaphore就像可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。Semaphore的属性如下:

SEMMSL

含义:每个信号量set中信号量最大个数 设置:最小250;对于processes参数设置较大的系统建议设置为processes+10

SEMMNI

含义:linux系统信号量set最大个数 设置:最少128

SEMMNS

含义:linux系统中信号量最大个数 设置:至少32000;SEMMSL * SEMMNI

SEMOPM

含义:semop系统调用允许的信号量最大个数设置:至少100;或者等于SEMMSL

4,目前系统的默认值是肯定不够了,不然zabbix 也不可能就挂了,所以先优化这个值。

echo “kernel.sem = 5010 641280 5010 128” >> /etc/sysctl.conf 

然后执行 sysctl -p /etc/sysctl.conf

之后通过 sysctl -a |grep kernel.sem 确实修改是否成功

这个参数优化完成之后你是不是觉得zabbix server 可以正常启动了?我告诉你不可以的,你再次启动还是会报一开始抛的错。你问我为啥,因为zabbix 占用的共享信号量还没有释放,所以还是会报错,需要把共享信号量释放出来。

通过 ipcs 命名来查看zabbix 占用的共享信号量,如下图:

62ee91dd4c2ef782e93e9791549cb5ef.jpeg

然后通过如下命令把这些共享信号量通通干掉;

ipcs -s | grep zabbix | awk '{print $2}' | xargs -n 1 ipcrm -s

干掉之后就可以正常启动zabbix server了。

5,总结

问题是解决了,但是需要思考为啥会有这样的问题产生,还是因为自己工作中没有能够防患于未然,该做的优化没有做,给自己留下了坑,最终还是要自己来填,所以工作要尽量能够提前把该做的做好,不然就会应了《无间道》那句台词“出来混,早晚要还的!”

---------------------------------------------

本文转自脚下的路博客51CTO博客

如需转载,请联系作者授权

原文链接:https://blog.51cto.com/seekerwolf/2357220

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。