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