问题状态:
zabbix_server 不能启动,系统CentOS 6.7ide
缘由分析:
这是由于内核对share memory的限制形成的。server
用到以下命令ipcs [-m|l|a],sysctl [-a|p]blog
[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 siz e都是没有限制的。可是zabbix仍然不能allocate内存。ip
接下来查看目前的共享内存设置,内存
[root@server01 ~]# sysctl -a|grep shm kernel.shmmni = 4096 kernel.shmall = 0 kernel.shmmax = 0
其中kernel.shmall表明总共能分配的共享内存,kernel.shmax表明单个段能allocate的内存(以字节为单位),这里都是0,因此确定有问题。it
而后查看 /etc/sysctl.confclass
kernel.shmmax = 68719476736 kernel.shmall = 4294967296
获得shmall为4G,shmax更大,为64G,由于是32位系统,因此设置shmall的时候不能超过32位系统能识别的最大内存,因此最多能设置为3G多,因此这个我改成表单
kernel.shmmax = 1294967296 kernel.shmall = 3294967296
而后执行sysctl -p生效,这时再查看以下。map
[root@server01 ~]# sysctl -a|grep shm kernel.shmmni = 4096 kernel.shmall = 3294967296 kernel.shmmax = 1294967296
的确生效了,而后启动zabbix_agentd成功,查看内存分配状况以下。grep
[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