解决zabbix的cannot allocate shared memory of size错误
生活随笔
收集整理的這篇文章主要介紹了
解决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,很多程序出現此錯誤也能使用該方法解決,就是因為內核對資源的限制問題。
?
?
轉載于:https://www.cnblogs.com/baizhantang/archive/2013/06/08/3126014.html
總結
以上是生活随笔為你收集整理的解决zabbix的cannot allocate shared memory of size错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发DBA(APPLICATION DB
- 下一篇: 关于dorado的存储问题