linux查看与修改交换内存配置(解决zabbix-agent启动报错)
問題
zabbix-agent在一臺(tái)centos6.5上啟動(dòng)報(bào)錯(cuò):
cannot allocate shared memory of size 949056: [28] No space left on device cannot allocate shared memory for collector檢查
# sysctl -a | grep shmkernel.shmmax = 33554432kernel.shmall = 2097152kernel.shmmni = 4096kernel.shmmax??????? 單個(gè)共享內(nèi)存段的最大尺寸,單位byte
kernel.shmall?????????? 系統(tǒng)可分配共享內(nèi)存段的最大值,單位是頁(yè)
kernel.shmmni???????? 共享內(nèi)存段的最大數(shù)量
還可以通過另一個(gè)命令查看:
# ipcs -l------ Shared Memory Limits --------max number of segments = 4096max seg size (kbytes) = 32768max total shared memory (kbytes) = 8388608max number of segments 對(duì)應(yīng) kernel.shmmni
max seg size (kbytes) 對(duì)應(yīng) kernel.shmmax (33554432 / 1024 = 32768)
max total shared memory (kbytes) 對(duì)應(yīng) kernel.shmall (可以計(jì)算出頁(yè)的大小了:8388608 * 1024 / 2097152 = 4096)
解決
下面開始分析問題,通過日志可以看到zabbix-agent需要的交換內(nèi)存大小是949056,遠(yuǎn)小于kernel.shmmax(33554432),所以該參數(shù)沒問題;
用下面的命令可以查看交換內(nèi)存的分配情況(為方便展示這里是一臺(tái)正常運(yùn)行了zabbix-agent的主機(jī)):
# ipcs -m------ Shared Memory Segments --------key shmid owner perms bytes nattch status 0x6c0105b0 0 zabbix 600 365056 6在此基礎(chǔ)上,統(tǒng)計(jì)下交換內(nèi)存已經(jīng)被用了多少(回到問題主機(jī)):
# ipcs -m | grep '^0x' | awk '{print $5}' | awk '{sum+=$1}END{print sum}'18051201805120,遠(yuǎn)小于kernel.shmall(2097152 * 4096) ,所以該參數(shù)也沒問題;
到這里已經(jīng)只剩下一個(gè)原因,數(shù)量被占滿了:
# ipcs -m | grep '^0x' | wc -l 4096這時(shí)候可以通過 ipcs -m 看看是哪些程序把數(shù)量占滿了,若有異常可以選擇用 ipcrm 釋放,都是正常占用的話就選擇提高最大數(shù)量(這里提高到兩倍):
# sysctl -w kernel.shmmni=8192若希望重啟系統(tǒng)后依舊有效,把該參數(shù)寫入配置文件:
# /etc/sysctl.confkernel.shmmni = 8192(另兩個(gè)參數(shù)的修改方式是一樣的)
?
over
轉(zhuǎn)載于:https://www.cnblogs.com/toSeek/p/8953643.html
總結(jié)
以上是生活随笔為你收集整理的linux查看与修改交换内存配置(解决zabbix-agent启动报错)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: margin的塌陷现象
- 下一篇: ELF 文件 动态链接 - 地址无关代码