zoukankan      html  css  js  c++  java
  • zabbix监控kernel.pid_max

    为什么要监控kernel.pid_max呢?以下这个案例来解答这个问题

    有台生产环境的服务器down了,ssh连接不上去。就在准备去重启该机器的时候,突然又可以ssh登录了。但是只有一个同事成功登录,其他人依然无法连接。在成功登录的同事终端上执行任何命令,都会报如下错误:
    # free
    -bash: fork: Cannot allocate memory

    后来多试验几次,偶尔能执行成功:

    # free
    total used free shared buff/cache available
    Mem: 7814784 340028 6688016 9488 786740 7244604
    Swap: 2097148 0 2097148

    可以看出memory还有很多,不可能是内存耗尽问题。

    当时想不通是啥情况。 今天查询资料无意中发现:当环境中有过多process,超过pid max可能会导致这个报错。

    1.  查询pid_max值并修改(原来值挺大,为了测试改小点)

    # sysctl -w kernel.pid_max=500
    kernel.pid_max = 500

    64位系统上pid_max最大值为2^22,32位系统上最大值为32768

    优化系统参数也只能临时解决一些问题,实际生产中开发和测试环境的机器会被很多开发和人员使用,会出现一些linux系统瓶颈问题。这个时候靠优化一些系统参数并不能解决问题,但是我们可以使用监控来提前发现可能出现的问题,然后提前登录机器释放出来一些资源使服务能够平稳运行

    具体的监控步骤如下:

    1、创建应用集:

    再已有的模板中创建一个应用集《PID使用率》

    2、创建监控项:

    为了方便理解把kernel.pid_max的监控项拆分成了三个监控项《PID最多可用数量,PID当前已使用数量,PID当前使用率百分比》,为了方便管理将三个监控项都关联到应用集《PID使用率》 

     3:创建触发器:

  • 相关阅读:
    js封装日期格式化函数
    原生js时间戳获取和转换
    自适应好用的一个css
    ES6五种遍历对象属性的方式
    ES6对象属性名简洁表示法和表达式、对象新方法、属性的遍历
    ES6数组扩展运算符(Rest+Spread)、类方法、原型方法
    正则表达式常见匹配
    typescript深copy和浅copy
    判断一个变量类型是对象还是数组
    npm 淘宝镜像的配置
  • 原文地址:https://www.cnblogs.com/suyj/p/15404452.html
Copyright © 2011-2022 走看看