ラテン語: Noli me tangere 我に触れるな
StartDBSyncersですが、マニュアルには内部監視のNVPSが4Kくらいまではデフォルトで問題ないと書かれています。
不必要に起動数増やすとデメリットしか増えませんので、無意味に100とか設定するのは止めましょう
StartDBSyncersって何?
StartDBSyncersはhistory syncerプロセスの起動数を設定するzabbix_server.confのパラメーターです。
デフォルトは4に設定されています。
以下、Zabbix7.0マニュアル「22 Appendixes - 2 Process configuration - 1 Zabbix server」の抜粋になります。
StartDBSyncers
The number of pre-forked instances of history syncers.
Note: Be careful when changing this value, increasing it may do more harm than good. Roughly, the default value should be enough to handle up to 4000 NVPS.
上記マニュアルの「more harm than good」は「メリットよりデメリットが大きい」とでも訳せばいいでしょうか…
一般的にプロセスは増加した際のメリットとデメリットがあります。
- メリット
プロセスが並列動作するので処理量が増加する - デメリット
CPU使用量、Context Switch、Load Average、メモリ使用量の増加する
意訳するとStartDBSyncers増加しすぎるとデメリットの方が多くなるって説明ですが、どちらかと言うとデメリットは起動数分増えるけど、メリットは起動数分増えないという説明が正しいかもしれません。
history syncerプロセスってなにするプロセス?
各データ収集プロセスが受け取った監視データはHistory Cacheに登録されます。history syncerプロセスはHistory Cacheに登録された監視データを処理するプロセスです。
簡単に説明すると以下の処理を1アイテム毎に行います。
- History Cacheの操作
History Cacheからアイテムの一番古いデータを検索し取り出す - 色々な処理
- 各種キャッシュに情報反映処理
- DBに監視データ登録
- トリガー評価やイベント発生
- トレンド計算
- History Cacheの操作
History Cacheから処理の完了した監視データを削除
なんで起動数増やしてもメリットは起動数分増えないの?
前述している「History Cacheの操作」は1つの監視データを複数プロセスで処理させない、または、同一アイテムの監視データの順番を守る為に、プロセスが排他処理されます。
つまり、プロセス数が増えても「History Cacheの操作」中は排他処理で1つのhistory syncerプロセスしか処理が実行されまません。
その為、デフォルトの4を8にあげてもメリットは2倍になりませんが、デメリットは2倍になります。
結論
StartDBSyncersはマニュアルに書かれている様に内部監視のNVPSが4Kくらいまではデフォルトのままで触らないようにしましょう。
後は、デメリットが増えるけど、割り切って上げるしかありません。
※:CPU使用量、Context Switch、Load Average、メモリ使用量の増加
ハードスペックがもの凄く高性能でデメリットを無視できるなら、StartDBSyncersの値を増やすのは問題ないと思います。