Zabbix 2.4.3 LLDのアイテム削除ができない

Zabbix 2.4.3で主にネットワーク機器の監視で使用していますが、
LLDでインターフェースを検出しているアイテム(親の)をGUIから削除をすると、画面表示なしで処理が受け付けられません。
再度画面を開くとやはり「アイテム」が消えていません。

想像するに、

監視ホスト数 1000台
アイテム数 200000アイテム

とかなりの数があるため、内部的に削除対象が多すぎてコマンドが投げられないか、
SQLが受付られないなどが考えられそうですが、こういった状況を解決する方法を
知りたく投稿させていただきました。

ちなみに負荷は軽くなるように更新間隔をコマンド実行時 通常時5分→4時間に
伸ばしたり、記録データを削除しても状況は変わりませんでした。

よろしくおねがいします。

環境など

Centos6.5
Zabbix 2.4.3
mysql 5.1.73
Innodb & partitioning

コメント表示オプション

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

my404261さん

LLDでインターフェースを検出しているアイテム(親の)をGUIから削除をすると、画面表示なしで処理が受け付けられません。

どの画面でどのような操作をしたかもう少々わかりやすく書いて頂けますでしょうか?
スクリーンショットを取って朱書きで「このアイテムを消そうとしたけど消えない」と書いてくれてもいいです。

想像するに、

監視ホスト数 1000台
アイテム数 200000アイテム

とかなりの数があるため、内部的に削除対象が多すぎてコマンドが投げられないか、
SQLが受付られないなどが考えられそうですが、こういった状況を解決する方法を
知りたく投稿させていただきました。

SQLが投げられなかったり受け付けられなかったりはしないのですが、
タイムアウトしてロールバックされる時はあります。
その場合、スロークエリログが出るようにMySQLを設定していたら、
ログに出るはずです。

ユーザー my404261 の写真

KAZさん

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

画面を添付いたします。確認ください。

例 「In」を「選択を削除」で削除するのですが、ヒストリ表示のみで画面表示なしで実行されません。

また、phpのログを見たところ

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 77 bytes)
in /usr/share/zabbix/include/db.inc.php on line 655,
referer: http://172.16/zabbix/disc_prototypes.php?hostid=10120&parent_discoveryid...

となっていたため

php.ini
memory_limit = -1

/etc/httpd/conf.d/zabbix.conf
php_value memory_limit 512M

に変更して、ちょっと状況は進み、今度は

PHP Fatal error: Maximum execution time of 300 seconds exceeded
in /usr/share/zabbix/include/func.inc.php on line 1901,
referer: http://172.16/zabbix/disc_prototypes.php?hostid=10120&parent_discoveryid...

となっていたため

php.ini
max_execution_time = 0

/etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 1800

に変更して、

PHP Fatal error: Maximum execution time of 1800 seconds exceeded
in /usr/share/zabbix/include/func.inc.php on line 1901,
referer: http://172.16/zabbix/disc_prototypes.php?hostid=10120&parent_discoveryid...

でまだ、タイムアウトになってしまいました。

もう少し、値を大きくしてみてチャレンジ中です。

また、mysqlのログも有効にしてそちら側のエラーも確認してみます。

途中の経過を報告させていただきました。

よろしくおねがいいたします。

ユーザー KAZ の写真

my404261さん

phpのエラーが出てましたか…A(^^;
まずはエラーが出なくなるように変数をいじってみてください。

修正は「/etc/httpd/conf.d/zabbix.conf」のみでいいです。

参考:Master ValueとLocal valueについて
http://algorhythnn.jp/blg/2013/10/23/phpinfo-local_value-master_value/

なので、「php_value max_execution_time 0」で制限外してみてください。

ユーザー KAZ の写真

my404261さん

補足としてですが…
P2.jpgの画面ですが、画面のフッタが出てないですよね?
こういう場合はphpがエラーになっている事が多いです。

その場合はwebサーバのログ見てエラーが出なくなる様にする必要があります。A(^^;
PHPエラーも画面に出てくれるとわかり良いのですが…

ユーザー my404261 の写真

KAZさん

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

> なので、「php_value max_execution_time 0」で制限外してみてください。

また、実施してみます。

>P2.jpgの画面ですが、画面のフッタが出てないですよね?
こういう場合はphpがエラーになっている事が多いです。

なるほど勉強になります。

ちなみに

php_value max_execution_time 3600 にしても同じでした・・・

しかしSQLのログを確認したところDELETE文は発行されていたため
コマンドは発行されていることも確認できました。

sqlログでは

DELETE FROM screens_items WHERE (resourceid IN ('37511','37512','37513','37514'・・・・・・・・・・

とサブクエリでひたすらitemidを指定して削除しているようなので、やはりアイテム数が多い場合厳しいのでしょうか?

最大アイテム数を設けて分割してSQLを投げて処理してくれればいいのですが・・・
どうも1行ですべてのアイテムをサブクエリーで指定しているのでは・・・

mysql 5.1 ですが、mysql5.6 では サブクエリーの高速化が歌われていましたのでアップデートしてみようかとも
考えています。

スナップショットを取りつつ、本番機で実施しているためこの先はすぐに実施できないため
連休明けにでも結果を報告します。

よろしくお願いいたします。

ユーザー KAZ の写真

my404261さん

ちなみに

php_value max_execution_time 3600 にしても同じでした・・・

しかしSQLのログを確認したところDELETE文は発行されていたため
コマンドは発行されていることも確認できました。

sqlログでは

DELETE FROM screens_items WHERE (resourceid IN ('37511','37512','37513','37514'・・・・・・・・・・

とサブクエリでひたすらitemidを指定して削除しているようなので、やはりアイテム数が多い場合厳しいのでしょうか?

アイテム数が20万アイテムですからね…

本番機だと「innodb_flush_log_at_trx_commit = 2」は怖いですよね…
http://qiita.com/kkyouhei/items/d2c40d9e3952c7049ca3

mysql 5.1 ですが、mysql5.6 では サブクエリーの高速化が歌われていましたのでアップデートしてみようかとも考えています。

そのほうがいいかもしれません。A(^^;

ユーザー my404261 の写真

KAZさん

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

まず結果から

mysql 5.6.24にバージョンアップして、無事高速化され削除が「3600」の設定のままでできるように
なりました!

やはり、サブクエリーの高速化が効いたのかな?

> 本番機だと「innodb_flush_log_at_trx_commit = 2」は怖いですよね…

既にその設定で運用していました。
スイッチのトラフィックを主に記録しているのと、死活監視がメインのため
あまり過去のデータにこだわらないため・・・

あと

> なので、「php_value max_execution_time 0」で制限外してみてください。

は不思議なことに 0でtimeアウトを検出してしまいだめでした・・・

いろいろ助言ありがとうございました。