Zabbixのホストインポートの性能

お世話になっております。

Zabbix Serverの負荷試験をするために、ホストデータをインポート機能を使って大量に投入しようとしています。
Zabbix Serverのバージョンは2.0.8でMySQLは5.1.69+InnoDB Pluginです。

20アイテム登録してあるテンプレートにリンクするホストを5,000登録しようとしていますが、100ホストの登録でも5分くらいの時間を要してしまっており、はかどらない状況です。
インポートの性能はこのくらいのものなのでしょうか?

利用しているサーバはZabbixとMySQL同居ですがそれなりの性能を有しており(16コア、64GBメモリ)、100行程度のインポートで遅くなるのは考えづらいのですが…。
何か確認しておくべき点はあるでしょうか?

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー mkt の写真

インポート以外にも一度に大量のデータを処理するのに時間がかかっているようでした。

例えばテンプレートにリンクしているホストが3,000あるのですが、テンプレートのアイテムを6つ複数選択して削除してみていますが20分くらいかかっています。
(/etc/httpd/conf.d/zabbix.conf での処理時間延長などは実施済みです)
Zabbix ServerのCPU使用率も期間中最大で6%程度(user+system+iowait)であり負荷がかかっていない状態です。

ただ、topで確認すると処理中のhttpdのCPU使用率が定常的に高い傾向にあります。

このへんがネックなのかなと思っているのですが、ほかにボトルネックになりそうな箇所は考えられるでしょうか?

ユーザー TNK の写真

MySQLのチューニングはされましたか?

InnoDB Pluginを明示的に利用されているようですので、十分なメ
モリをMySQLに割り当てられていると思いますが、どのくらいの設
定にされていますか?

もし、メモリのチューニングを行われていないのであれば、先日、
寺島さんが公開されていたブログなどもご参照ください。
http://kodai74.blogspot.jp/2013/11/zabbix10000.html

あと、どんなにCPUが高性能でメモリを搭載していても、ディスク
のI/Oがボトルネックになってしまう場合もありますが、

Zabbix ServerのCPU使用率も期間中最大で6%程度(user+system+iowait)であり負荷がかかっていない状態です。

とのことですので、ディスクのI/Oの問題でもなさそうです。

試しに、ホスト100台のXMLを作成して、インポートしてホストを追
加してみましたが、約1分で追加できました。
CPUのutilizationですが、userが最大で45%、systemが最大で14%、
iowaitが最大5%で、合わせた最大が約50%程度まででした。

環境の条件としては以下の通りです。

 ・既存のZabbix上に登録されていたホストは、Zabbix serverのみ
 ・追加するホストは、Template OS Linuxをリンクしたホスト
 ・Zabbixが稼働しているサーバは、VMware上の仮想マシン
   OS: CentOS 6.5(32bit) メモリ2GB
   Zabbix 2.2.2
   MySQL 5.1.71-1(mysql-server)
    /etc/my.cnfに文字コードとinnodb_file_per_tableのみ
   Apache HTTP Server 2.2.15-29(httpd) + APC 3.1.9-2(php-pecl-apc)
   PHP 5.3.3-27
   物理サーバのCPUはIntel Core i7。

すぐに試せる環境は2.2.2にあげてしまってました。すみません。

500台まで増やすと15分程度かかりましたが、各プロセスの状態を
確認すると、httpdとmysqldのCPU利用率は高くなるので、このあた
りをチューニングすることで改善するかもしれませんが、インポー
ト処理は、PHPでシーケンシャルに処理されていると思われるので、
あまり改善はできないかもしれません。

私のこの環境だと、100台くらい毎にインポートするのが確実そう
です。

もともと登録されているホスト数も少ないので比較にはならないか
もしれませんが、ご参考まで。

ユーザー mkt の写真

コメントありがとうございます。

MySQLのチューニングは細やかではありませんが大雑把に施しています。

・innodb_buffer_pool_size = 30G
・innodb_log_file_size=128M
・innodb_file_per_table
・innodb_flush_method=O_DIRECT

※速度UPのためにバイナリログの出力も止めていました。

httpdのプロセスが1つだけ100%近辺に張り付いており、インポートで利用しているリクエストでプロセスが1つだけ使われている状態なのかなと推察しています。
ただ、TNKさんの実施例を見ても最低限同等の性能は出て欲しいところなのですが…。

やはりPHPがボトルネックではないかと思っています。

もし、メモリのチューニングを行われていないのであれば、先日、
寺島さんが公開されていたブログなどもご参照ください。
http://kodai74.blogspot.jp/2013/11/zabbix10000.html

こちらは確認していました。
「10,000ホストインポートした」と記載されており注意事項なども無かったので同じようにテンプレートをリンクした設定でインポートしてみたのですが、時間がかかってしまった、という経緯でした。

ご確認ありがとうございました。

ユーザー TNK の写真

先の回答にも書かせて頂きましたが、私は、PHPの処理を少し
でも高速化しようとAPCを利用しています。

PHPに対して何らかの対策は行われていますか?

あと、10000ホストインポート時には、何回かに分けてインポート
したと聞いたような気がするのですが、定かではないので手順
とか聞けたら寺島さんに確認してみようと思います。

ユーザー mkt の写真

性能評価用に構成を変えるのが難しい環境のため、PHPに対しては対策できていません。
インポート性能に関してはTNKさんが仰るようにPHPのネックのように思います。

同様に多くのホストの設定を一度に更新(テンプレートの設定を更新することで5000ホストに反映)する場合もHTTPDがbusyになりとても多くの時間がかかります。

ユーザー TNK の写真

ホストの大量登録を行った経験のある方に確認したところ、大量ホストの登録には、
Zabbix APIを利用してホストの登録を繰り返し実行して、対応されたそうです。