天天看點

一次線上zabbix server 挂掉的思考

突然間發現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