Performance
Zabbix:如何使用活動項目實現 1s 間隔?
甚至可能/推薦嗎?
我們正在嘗試設置一些配置為 1 秒間隔的活動項目。然而,這些項目並沒有保持所需的間隔,而是我們大約每 30 秒收集一個值(如相應圖表所示)。
在客戶端使用一個簡單的“echo 1”作為使用者參數來測試上述內容,它應該每 1 秒立即發送一次,但不是。我們在伺服器本身上部署了一個客戶端,其配置方式與上述相同,每秒成功收集一次。
我們的 Zabbix 設置相對較新,因此底層 MySQL 數據庫相當小,我們沒有那麼多客戶端/項目。伺服器在 Linux VM 中執行,客戶端在專用 Linux 主機上(而不是在本地網路上)。
我們查看了伺服器/客戶端上的配置文件,但沒有看到什麼可以幫助我們實現這一點(除了添加更多的陷阱)。這似乎不是連接問題,因為客戶端緩衝區應該克服這個問題。
- 這種行為的原因可能是什麼?
- 如何找到瓶頸?通過Zabbix 伺服器統計可以看到什麼?
- 硬體是最重要的因素嗎?
- MySQL優化是強制性的嗎?
無法發布更多連結,因此我們查看了以下內容:
- Zabbix 參考手冊中的**性能調整頁面
- Alexei Vladishev zabbix 性能調整幻燈片(在 slideshare 上找到)
感謝@Richlv,經過我進行的一些測試(請參閱評論),我們發現了問題。因為活動項目是按順序處理的,並且這些項目背後的命令可能需要一點時間才能返回,因此會為每個項目產生一些延遲疊加,代理正在盡最大努力循環所有項目。
由於無法並行處理活動項目,因此在這種情況下可能的解決方案如下:
- 增加活動項目的時間間隔
- 使用zabbix_sender手動完成工作(可能還需要實現活動項目提供的客戶端緩衝區)
- 也許另一種方法是使用日誌文件監控
- 在同一個客戶端上執行 2 個代理,從而設置並行程序,明智地傳播活動項目(雖然不是一個很好的解決方案)
- 提高活動項目背後的命令的性能和/或減少最壞情況的時間(例如超時)——我們做了什麼