DBSyncerの動作頻度について
お世話になっております。
Zabbixの性能評価を実施するため、ヒストリデータをzabbix-senderで投入しようとしています。
その場合、実際に投入したヒストリがZabbixの画面上で確認できるようになるにはDBSyncerによる値の反映を待つ必要があるのだと思います。
具体的には1,000ホストに対して9アイテムのヒストリを396日分、10分間隔で投入しようとしています。
1ホスト分のデータを用意して投入を試行したところ、全データが画面に反映されるまでおよそ15分かかりました。
この時間を短くしたいのですが、チューニングポイントはあるでしょうか?
ちなみにZabbixが動いているサーバのリソース利用状況はまだまだ余裕があります。
zabbix_server.confのキャッシュ関連の項目は全て2GBにしています。(搭載メモリは64GBです)
MySQLに直接インポートする方法の方が良いのでしょうか?
TNK - 投稿数: 4742
とのことですが、何にどれだけ時間がかかっているのかがわかりま
せん。
例えば、zabbix_senderの実行には、どの程度の時間がかかったの
でしょうか?
zabbix_senderの実行自体に15分近くかかってしまっているのであ
れば、反映されるまでに15分以上かかってしまうでしょう。
メモリを64GBつまれているのであれば、MySQLはどのようにチュー
ニングされているのでしょうか?
MySQLのデフォルトの設定では、搭載されたメモリを有効活用でき
ていないかもしれませんので、どのようにチューニングされている
のかをお教えください。
利用されているMySQLのバージョンもお教えいただければと思いま
す。
単純なデータインポートでは実現するのは困難であったと思います。
まずは、どこがボトルネックになっているのかを特定してから、そ
れを改善する方法を検討しませんか?
mkt - 投稿数: 41
コメントありがとうございます。
zabbix_senderの実行は1分以内で終わります。
その後にZabbix Server自身の監視でhistory cacheの空き率を見ると100%を下回り、データの反映が終わるまでゆるやかに100%に近づいていきます。
MySQLのバージョンは5.1です。(今回の性能測定では5.5の利用はできません)
パラメータは下記のようにしています。
innodb_buffer_pool_size=10485760
innodb_thread_concurrency=100
innodb_log_file_size=10485760
約11億件のレコードをhistoryテーブルにMySQLローダーでインポートしましたが、「最新データ」表示に出てきません。
(1件をinsert文で入れた時は出てきたのですが…)
追記:
MySQL Loader(LOAD DATA INFILE文)で件数をかなり絞ってデータをインポートした場合はZabbix画面に表示されました。
レコードの数が問題なんでしょうか。
TNK - 投稿数: 4742
StartDBSyncersの値はどのような値を設定されてますか?
また、Zabbix 2.xであれば、WebフロントエンドでZabbix serverの
各プロセスの状況を確認できるテンプレートが用意されているので
そのテンプレートを利用して、どの処理に負荷がかかっているのか
や、キャッシュの状態を確認できると思います。
場所が分かりにくいのですが、
「監視データ」->「最新データ」
で右上のプルダウンで「すべて」を選択した状態にすると、下の一
覧の左側にホストが表示されると思います。
その表示されたホスト「Zabbix server」をクリックするとメニュー
がでますので「ホストスクリーン」を選択してください。
あとは、右上のプルダウンで「Zabbix server health」を選択する
と、Zabbixとしての負荷状況を確認できます。
キューに溜まっていないか、どのプロセスが忙しい状況か、キャッ
シュの利用状況などが確認できますので、Zabbixサーバの状態を確
認してみてください。
デフォルトのStartDBSyncersの値は4だったと思いますので、Zabbix
サーバがzabbix_senderで受けたデータを、DBに反映させるのに時間
がかかってしまっているのかもしれません。