突然间发现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 占用的共享信号量,如下图:

然后通过如下命令把这些共享信号量通通干掉;
ipcs -s | grep zabbix | awk '{print $2}' | xargs -n 1 ipcrm -s

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

一次线上zabbix server 挂掉的思考的更多相关文章

  1. 使用percona-xtrabackup实现对线上zabbix监控系统数据库mariadb5.5.47的主从同步

    使用percona-xtrabackup实现对线上zabbix监控系统数据库的主从同步 业务背景: zabbix3.0.4是业务的主要监控,部署在一台单机中,为避免数据丢失先对其做数据主从同步,因主数 ...

  2. 记一次线上Zabbix对Redis监控实录

    前言:Redis作为缓存服务器我想大家都比较的熟悉,那么,如果想要更好的维护和监控,那么我们会对其redis服务器统一监控起来,如何监控呢?如果在生产环境一台服务器部署多个redis,这样就会出现多个 ...

  3. 转:一篇讲线上优化查 CPU的脚本

    原文链接:https://my.oschina.net/leejun2005/blog/1524687   摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都遇到 ...

  4. 线上zk节点报org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:187) at java.lang.Thread.run(libgcj.so.10)

    线上zk做配置管理,最近突然发现两个节点一直在刷下边 java.nio.channels.CancelledKeyException    at gnu.java.nio.SelectionKeyIm ...

  5. Springcloud及Git线上配置详解

    SpringCloud 这个阶段该如何学? 三层架构 + MVC 框架: Spring IOC AOP SpringBoot,新一代的JavaEE开发标准,自动装配 模块化~ all in one,代 ...

  6. zabbix server的Discover功能,实现zabbix agent 大批量的自动添加,并链接到指定的模版(3)

    一.需求 zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么.但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多.这时,z ...

  7. 轻松排查线上Node内存泄漏问题

    I. 三种比较典型的内存泄漏 一. 闭包引用导致的泄漏 这段代码已经在很多讲解内存泄漏的地方引用了,非常经典,所以拿出来作为第一个例子,以下是泄漏代码: 'use strict'; const exp ...

  8. Java程序线上故障排查

    目录 一.Linux 内存和cpu 网络 磁盘 /proc文件系统 二.JVM Java堆和垃圾收集器 gc日志分析 JVMTI介绍 Attach机制 java自带工具 三.三方工具 jprofile ...

  9. zabbix Server 4.0 触发器(Trigger)篇

    zabbix Server 4.0 触发器(Trigger)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.触发器(Trigger)概述 1>.上一篇博客我们介绍了“内 ...

随机推荐

  1. go build Multiple main.go file

    golang 如何编译同目录下多个main文件? 多个go 文件在相同目录编译时候会报错, 可将文件放在不同的package下,结构如下: buidtest/├── a│   └── a.go└── ...

  2. centos7.3使用花生壳映射端口

    首先下载花生壳客户端(其实我觉得更应该叫做服务端),选择相应的版本就可,例如我就是选择的linux->centos版本的 https://hsk.oray.com/download/ 我的版本为 ...

  3. Python——xlsxwriter模块的使用

    xlsxwriter是用于制作Excel表格的 安装方法 40 wget https://pypi.python.org/packages/e4/63/e53deacc293c7fadf95b8404 ...

  4. Centos7安装teamviewer 32/64位

    centos7安装teamviewer teamviewer安装包,自己去官网下吧,不用找了,估摸着就没有Centos7 64位的 所以直接下centos teamviewer 32位那个rpm包吧 ...

  5. Truthy and Falsy Values and Equality Operators

    最近在学习JS.  有一些概念还希望跟大家分享出来 Truthy and Falsy Values Falsy Values: undefined, null, 0, '', NaN(not a nu ...

  6. style-loader、css-loader、mini-css-extract-plugin 区别

    项目 区别 css-loader 处理 css 文件 style-loader 把 js 中 import 导入的样式文件代码,打包到 js 文件中,运行 js 文件时,将样式自动插入到<sty ...

  7. 关于meshgrid和numpy.c_以及numpy.r_

    meshgrid的目的是生成两套行列数一致的矩阵,其中一个是行重复,一个是列复制:可以这么来理解,通过ravel()将矩阵数据拉平之后,就可以将这两套矩阵累加在一起,形成一个两行数据,要达到这个效果是 ...

  8. EXT4 超级块介绍(转)

    https://blog.csdn.net/sunlei0625/article/details/79011946 The superblock records various information ...

  9. JQuery 树状结构 jQuery-treeview.js 插件

    由简入繁实现Jquery树状结构 在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一 ...

  10. 自然语言处理工具hanlp自定义词汇添加图解

    过程分析 1.添加新词需要确定无缓存文件,否则无法使用成功,因为词典会优先加载缓存文件 2.再确认缓存文件不在时,打开本地词典按照格式添加自定义词汇. 3.调用分词函数重新生成缓存文件,这时会报一个找 ...