zabbix_senderが重い原因について
お世話になります。
zabbix_senderの1件当たりの実行時間が長い(1秒~7秒以上)ことがあります。
考えられる原因は何か分かりますでしょうか?
(ボトルネックがmysqlなのか、Zabbixなのか、どこをチューニングすれば良いかご教授頂けますと幸いです)
Zabbix_sernderの実行時間が長い時と短い時があります。
短い時は、0.000053秒とかで完了します。
zabbix_senderの「-T」オプションで纏めて送信した場合、
時によりますが、100件送信あたり29秒かかっていました。
(早く終わるときは、100件送信あたり1秒かからないのですが。。。)
関係あるか分かりませんが、Zabbix-serverプロセスを再起動したら、しばらくは、zabbix_senderの実行時間が短いです。
■コマンド例
zabbix_sender --zabbix-server 127.0.0.1 --port 10051 --host "snmptraps" --key snmptraps --value "(, ) , : , .1.3.6.1.2.1.1.3.0: 161:16:03:12.89, .1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.4.1.3224.0.200, .1.3.6.1.4.1.3224.2.1.0: 430, .1.3.6.1.4.1.3224.2.3.0: \"2014-03-27 13:41:02 [Root]system-critical-00430: Dst IP session limit! From :52618 to 10.232.131.191:53, proto UDP (zone Untrust int ethernet0/2). Occurred 1 times.\", .1.3.6.1.6.3.18.1.3.0: , .1.3.6.1.6.3.18.1.4.0: \"VFJP\", .1.3.6.1.6.3.1.1.4.3.0: .1.3.6.1.4.1.3224" ;done
Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 2.065968"
sent: 1; skipped: 0; total: 1
《動作環境》
OS:RedHat5.8
zabbix:v1.8
Mysql:5.0.77
Apache:2.2.3
メモリ:64GB
CPU:6コア
HDD:600GB
[zabbix_server.conf]
StartPollers=75
StartIPMIPollers=10
StartPollersUnreachable=40
StartTrappers=50
StartPingers=50
CacheSize=100M
StartDBSyncers=4
HistoryCacheSize=24M
TrendCacheSize=20M
HistoryTextCacheSize=32M
Timeout=30
FixActionMismatch=1
[zabbix_agent.conf]
Timeout=30
[my.cnf]
default-table-type=InnoDB
default-character-set=utf8
skip-character-set-client-handshake
innodb_file_per_table
innodb_buffer_pool_size=32G
innodb_log_file_size=512M
innodb_log_buffer_size=64M
innodb_log_files_in_group=2
innodb_additional_mem_pool_size=128M
sort_buffer_size=4M
read_rnd_buffer_size=2M
join_buffer_size=256K
read_buffer_size=1M
table_cache=1024
query_cache_size=32M
max_connections = 300
max_allowed_packet=4MB
■TOPコマンド結果
top - 19:29:21 up 7 days, 10:56, 2 users, load average: 2.49, 2.61, 2.96
Tasks: 464 total, 2 running, 462 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.2%us, 2.3%sy, 0.0%ni, 79.0%id, 0.1%wa, 0.2%hi, 2.2%si, 0.0%st
Mem: 65881732k total, 65283460k used, 598272k free, 230176k buffers
Swap: 18874352k total, 70044k used, 18804308k free, 21971356k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3917 mysql 15 0 36.6g 36g 5004 S 96.6 57.4 8052:53 mysqld
24803 zabbix 16 0 265m 33m 32m S 3.0 0.1 1:55.99 zabbix_server
24399 zabbix 15 0 319m 66m 64m S 2.0 0.1 0:49.54 zabbix_server
24364 zabbix 15 0 319m 65m 63m S 1.3 0.1 1:12.15 zabbix_server
24375 zabbix 15 0 319m 33m 31m S 1.3 0.1 0:51.58 zabbix_server
24477 zabbix 15 0 319m 36m 34m S 1.3 0.1 1:27.32 zabbix_server
24423 zabbix 15 0 319m 36m 34m S 0.7 0.1 0:44.60 zabbix_server
24431 zabbix 15 0 319m 36m 34m S 0.7 0.1 1:28.34 zabbix_server
30741 zabbix 15 0 5916 672 560 S 0.7 0.0 0:00.03 fping
24799 zabbix 15 0 266m 34m 32m S 0.3 0.1 2:15.97 zabbix_server
30479 zabbix 15 0 5916 592 516 S 0.3 0.0 0:00.02 fping
30549 zabbix 15 0 5916 592 516 S 0.3 0.0 0:00.02 fping
■Zabbixサーバの状態
パラメータ 値 詳細
Zabbixサーバの起動 はい localhost:10051
ホスト数 (有効/無効/テンプレート) 4221 2321 / 1889 / 11
アイテム数 (有効/無効/取得不可) 55572 28341 / 27207 / 24
トリガー数 (有効/無効)[障害/不明/正常] 176707 172038 / 4669 [219 / 112859 / 58960]
ユーザ数 (オンライン) 33 3
1秒あたりの監視項目数(Zabbixサーバの要求パフォーマンス) 436.34 -
以上ですがよろしくお願い致します。
fripper - 投稿数: 495
mysql の cpu 利用が高く、しかし IOwait はそれほどでもない‥という状況からの憶測です
zabbix_server が持っている、DBへ書き込むべき値のキャッシュに、空きがある状態の場合には、
sender からの値を「すっ」と受け入れることができて、sender 側の実行が早く終わる。
zabbix_server 側のキャッシュがいっぱいに近い場合、sender から大量の値を受取ると、
キャッシュから DB へのフラッシュ処理が完了しない限り、値を受け取れず、
sender 側が待たされる
‥という状況ではないでしょうか?
zabbix_server.conf 内の
>StartDBSyncers=4
>HistoryCacheSize=24M
>TrendCacheSize=20M
>HistoryTextCacheSize=32M
あたりを増やしてみると効果があるかもしれません
また、zabbix インターナル型のアイテム 'zabbix[~]' を使えば、zabbix_server 内部の状況をある程度知ることができますので
これらアイテムを登録して、状況を見てみることで、別のボトルネックが特定できるかもしれません
hiroyuki - 投稿数: 43
fripperさん
回答ありがとうございます。
返信が遅くなりましてすみませんでした。
設定値は、寺島さんのブログを参考に、デフォルトの5倍に変更してみました。
http://kodai74.blogspot.jp/2011/02/zabbix-1618.html
下記のように変更したところ、Zabbix_sernderの実行時間が劇的に早くなりました。(問題解消しました。)
HistoryCacheSize=24M -> 40M
HistoryTextCacheSize=32M -> 80M
ハマっていたので、非常に助かりました、ありがとうございました。
以上ご報告までですが、よろしくお願い致します。