突然間發現zabbix 挂了,咋發現的呢?報警的世界突然安靜了,你就會覺得不妥了。這是運維人員的通病,有報警嫌煩,沒報警心裡會不安。
1,圖形界面上确實顯示zabbix server is not running
2,排查zabbix server 日志
tail /var/log/zabbix/zabbix_server.log
發現有如下報警:
zabbix_server [22890]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [22894]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [22898]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [22902]: cannot open log: cannot create semaphore set: [28] No space left on device
zabbix_server [22907]: cannot open log: cannot create semaphore set: [28] No space left on device
3, 搜尋一下發現是因為給系統配置的共享記憶體值不夠,如何解決這個問題呢?需要分兩步解決。
第一步:優化系統的kernel.sem 的配置參數怎麼檢視及四個對應參數的代表着個啥?
cat /proc/sys/kernel/sem
250 32000 32 128
250 SEMMSL max semaphores per array 信号集容納最大信号數量
32000 SEMMNS max semaphores system wide 所有信号的最大數量
32 SEMOPM max ops per semop call 調用單個信号集中最大信号數量
128 SEMMNI max number of arrays 信号集的最大值
信号量(Semaphore),有時被稱為信号燈,是在多線程環境下使用的一種設施,它負責協調各個線程, 以保證它們能夠正确、合理的使用公共資源。Semaphore就像可以容納N人的房間,如果人不滿就可以進去,如果人滿了,就要等待有人出來。Semaphore的屬性如下:
SEMMSL
含義:每個信号量set中信号量最大個數 設定:最小250;對于processes參數設定較大的系統建議設定為processes+10
SEMMNI
含義:linux系統信号量set最大個數 設定:最少128
SEMMNS
含義:linux系統中信号量最大個數 設定:至少32000;SEMMSL * SEMMNI
SEMOPM
含義:semop系統調用允許的信号量最大個數設定:至少100;或者等于SEMMSL