參考:https://www.zabbix.com/documentation/4.0/zh/manual/appendix/performance_tuning
硬件
關於硬件的一般建議:
- 使用最快的處理器
- SCSI/SAS都是比IDE/SATA更好的選擇 (使用實用程序hdparm可以顯着提高IDE磁盤的性能)
- 15K RPM優於10K RPM,優於7200RPM
- 使用快速RAID存儲
- 使用快速以太網適配器
- 內存總是越多越好
操作系統
- 使用最新(穩定版!)版本的操作系統
- 從內核中排除不必要的功能
- 調整內核參數
Zabbix配置參數
可以調整許多參數以獲得最佳性能。
zabbix_server
- StartPollers
一般規則 - 保持此參數的值盡可能低。 zabbix_server的每個附加實例都會添加已知的開銷, 同時, 並行性增加。當隊列平均包含最小參數數量(理想情況下,在任何給定時刻為0)時,實現最佳實例數。可以通過使用內部檢查zabbix [queue]來監視此值。
- DebugLevel
最佳值為3。
- DBSocket
僅限MySQL. 建議使用DBSocket連接數據庫。那是最快和最安全的方式。
/var/run/mysqld/mysqld.sock # Server version: 5.7.29
數據庫引擎
這可能是Zabbix調優中最重要的部分。 Zabbix在很大程度上取決於數據庫引擎的可用性和性能。
- 使用最快的數據庫引擎, 即MySQL或PostgreSQL
- 使用穩定版本的數據庫引擎
- 從源重建MySQL或PostgreSQL以獲得最大的性能
- 遵循從MySQL或PostgreSQL文檔獲取的性能調優說明
- 對於MySQL,使用InnoDB表結構
- 如果使用InnoDB,ZABBIX的運行速度至少要快1.5倍(與MyISAM相比). 這是因為並行性增加。但是,InnoDB需要更多的CPU性能。
- 強烈建議調整數據庫服務器以獲得最佳性能。
- 將數據庫表保留在不同的硬盤上
- 'history', 'history_str, 'items' 'functions', triggers', and 'trends' 是使用最多的表格。
- 對於大型安裝,建議在tmpfs中保留MySQL臨時文件:
- MySQL >= 5.5: not recommended (MySQL bug #58421)
- MySQL < 5.5: recommended
一般建議
- 僅監控所需參數
- Zabbix LLD 設置過濾條件,不自動監控某些item
- 調整所有項目的“更新間隔”。 保持較小的更新間隔對於漂亮的圖形可能是好的,但是這可能會超載Zabbix
- 調整默認模板的參數
- 調整housekeeping參數
- 不監視返回相同信息的參數。
- 避免使用長期給出的觸發器作為函數參數。 例如,max(3600)的計算速度明顯比max(60)慢。
使用“ps”和“top”查看Zabbix進程性能
Linux
在Linux系統上 ps 命令可以與 watch 命令一起使用,以觀察Zabbix的工作。 例如,要每秒運行 ps 命令5次以查看進程活動:
watch -n 0.2 ps -fu zabbix
僅顯示Zabbix代理和代理進程:
watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'
僅顯示歷史記錄進程:
watch -tn 0.2 'ps -fC zabbix_server | grep history'
“ps”命令產生一個寬輸出(大約190列),因為一些活動消息很長。 如果您的終端有少於190列文本,您可以嘗試
watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'
僅顯示沒有UID,PID,開始時間等的命令行。
top 命令也可用於觀察Zabbix的性能。 在top中按'c'鍵顯示其命令行的進程。 在我們對Linux top 和 atop的測試中,正確顯示了Zabbix進程的變化活動, 但是 htop 不顯示不斷變化的活動。
