1. 數據庫調優
① Zabbix是寫多讀少的業務,所以要提高Zabbix寫入的性能。MyISAM引擎時不可以使用的,至少要使用InnoDB引擎(mysql 5.5),或者使用TokuDB引擎(mysql 5.7),當然也可以把數據庫的硬盤升級爲SSD硬盤。
② 去掉沒有用的監控項,增加監控項的取值間隔,減少歷史數據保存週期
③ 針對Zabbix歷史數據和趨勢圖的表進行週期性分表
④ 把被動模式修改爲主動模式,增加zabbix-proxy將監控項的採集數據集中寫入,而不是每個Zabbix Agent都向最終的Zabbix Server發數據
2. 進程調優
① 針對Zabbix-Server進程調優,進程忙碌的時候就增加進程數量
將掃描IP網段的頻率時值爲10s,這樣會增加自動發現進程的壓力:
Zabbix的進程監控都在 圖形
裏面,可以選擇查看數據採集進程的情況,如自動發現進程。這裏不難發現,自動發現進程的已經到了100%:
下面通過調優來降低自動發現忙碌程度:
# 這裏把自動發現進程數設置爲6個(0~250)
[root@Zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
StartDiscoverers=6
# 重啓Zabbix Server
[root@Zabbix-server ~]# systemctl start zabbix-server.service
不建議上來就把值設置爲最大,因爲 每增加一個進程需要消耗一定內存空間的。
然後再看自動發現的忙碌程度就降低了非常多:
調優的原則是:哪個進程比較忙就增加進程數量,不建議加到幾十倍,最好要一點點去調。要保證曲線平穩,而不是高低起伏大。
② 針對Zabbix-Server緩存調優,剩餘內存少的時候增加緩存值
緩存的作用是用來存儲監控的主機,這些目標主機數據是從數據庫查出來的然後放到內存中的。
當然,取值的監控項
和 觸發器指標
也都是存在Zabbix Server的緩存中。如果緩存不夠用了,Zabbix Server就會出問題。Zabbix Server默認的緩存是8M。爲了測試緩存調優效果,這裏先把緩存調爲最低,
# 修改緩存爲128K(128K-8G)
[root@Zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
CacheSize=128K
# 重啓Zabbix Server
[root@Zabbix-server ~]# systemctl restart zabbix-server.service
這個時候發現,Zabbix Server掛掉:
# 查看Zabbix Server日誌
[root@Zabbix-server ~]# tailf /var/log/zabbix/zabbix_server.log
67257:20200602:102244.619 __mem_malloc: skipped 1 asked 1816 skip_min 1104 skip_max 1104
67257:20200602:102244.619 [file:dbconfig.c,line:94] __zbx_mem_realloc(): out of memory (requested 1816 bytes)
67257:20200602:102244.619 [file:dbconfig.c,line:94] __zbx_mem_realloc(): please increase CacheSize configuration parameter
意思也就是內存不足( out of memory ),讓我們增加CacheSize配置參數。如果以後有這樣的報警,需要把緩存調整大一些。除了 內部進程、採集進程
還有緩存使用率:
大於75%的時候會報警,如果緩存不夠就需要增加緩存!