zoukankan      html  css  js  c++  java
  • 解决zabbix的cannot allocate shared memory of size错误

    问题状态:

    zabbix_agentd不能启动,系统CentOS 5.8 i386

    原因分析:

    这是因为内核对share memory的限制造成的。

    用到如下命令ipcs [-m|l|a],sysctl [-a|p]

    [root@server01 ~]# ipcs -l
    
    ------ Shared Memory Limits --------
    max number of segments = 4096
    max seg size (kbytes) = 0
    max total shared memory (kbytes) = 0
    min seg size (bytes) = 1
    
    ------ Semaphore Limits --------
    max number of arrays = 128
    max semaphores per array = 250
    max semaphores system wide = 32000
    max ops per semop call = 32
    semaphore max value = 32767
    
    ------ Messages: Limits --------
    max queues system wide = 16
    max size of message (bytes) = 65536
    default max size of queue (bytes) = 65536

    从上面可以看到max total shared memory和max seg size都是没有限制的。但是zabbix仍然不能allocate内存。

    接下来查看目前的共享内存设置,

    [root@server01 ~]# sysctl -a|grep shm
    kernel.shmmni = 4096
    kernel.shmall = 0
    kernel.shmmax = 0

    其中kernel.shmall代表总共能分配的共享内存,kernel.shmax代表单个段能allocate的内存(以字节为单位),这里都是0,所以肯定有问题。

    然后查看/etc/sysctl.conf

    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296

    得到shmall为4G,shmax更大,为64G,因为是32位系统,所以设置shmall的时候不能超过32位系统能识别的最大内存,所以最多能设置为3G多,所以这个我改为

    kernel.shmmax = 1294967296
    kernel.shmall = 3294967296

    然后执行sysctl -p生效,这时再查看如下。

    [root@server01 ~]# sysctl -a|grep shm
    kernel.shmmni = 4096
    kernel.shmall = 3294967296
    kernel.shmmax = 1294967296

    的确生效了,然后启动zabbix_agentd成功,查看内存分配情况如下。

    [root@server01 ~]# ipcs -m
    
    ------ Shared Memory Segments --------
    key        shmid      owner      perms      bytes      nattch     status      
    0x7401840e 2916352    root      600        4          0                       
    0x6c0180cf 3047425    zabbix    600        527272     6  

    其实不光zabbix,很多程序出现此错误也能使用该方法解决,就是因为内核对资源的限制问题。

    -------------------------------------------------------------------------------------------------------------------------------------------------
    以上都为原创文章,转载请注明出处。

    我是Yiffy,以下是我的联系方式。
    http://www.cnblogs.com/baizhantang/
    有问题可以联系我,欢迎交流技术。

    By: Yiffy



  • 相关阅读:
    通过串口抓取图片
    Qt也有垃圾回收(通过QScopedPointer实现),下决心在项目里使用QScopedPointer,省了太多事情了,而且更安全!!
    IOS端 margin-top 和 margin-bottom 使用负数时的区别
    使用ROME解析rss,如何获取icon图标
    SVG图片如何调整大小和颜色
    Js点击触发Css3的动画Animations、过渡Transitions效果
    如何判断是否为同一个App,Ionic3如何修改包名
    如何使用JPQL写纯SQL语句
    为何在新线程中使用注解获取不到Spring管理的Bean
    Ionic的NavController 和ModalController 的区别
  • 原文地址:https://www.cnblogs.com/baizhantang/p/3126014.html
Copyright © 2011-2022 走看看