Webシナリオの更新に失敗してしまう

Zabbix初心者です。はじめまして。Zabbix2.2を利用しています。
フォーラムを見て、日々勉強させてもらっています。過去のものを検索しましたが、うまく解決できずに投稿させてもらいます。

Webシナリオの更新を行おうとすると、下記のようなメッセージが出てしまい、更新に失敗してしまいます。
MySQLは文字コードUTF8を設定しています。

Error in query [UPDATE httptest SET httptestid='12', status='1', hostid='10105', name='admin' WHERE httptestid='12'] [Lock wait timeout exceeded; try restarting transaction]
SQLの実行に失敗しました"UPDATE httptest SET httptestid='12', status='1', hostid='10105', name='admin' WHERE httptestid='12'"。

Webシナリオの更新も、Webシナリオに関連する他の設定の更新、削除もできず、初めのWebシナリオの登録のみ可能な状況です。
他のWebシナリオも登録はできましたが、同じ事象となってしまっています。

またZabbixにていくつか他の監視設定をしていますが、同様の事象はWebシナリオだけ発生しています。
対処方法について、ご教示ください

コメント表示オプション

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

Zabbix 2.2という表記だけではなく、利用されているZabbixのより
詳細なバージョンをお教えください。

また、ZabbixサーバやMySQLサーバを稼働させているサーバの負荷
状況はいかがですか?
負荷が高いようであれば、各種パラメータのチューニングが必要か
もしれません。
my.cnfやzabbix_server.confなどでデフォルトから変更されている
パラメータがあれば、それらもお教えください。

あと、MySQL側のログも何か出力されていないかを確認してみてく
ださい。

ユーザー yutaka_ume の写真

情報についてお伝えします。

Zabbixの詳細なバージョンですが、2.2.8-1になります。

ZabbixサーバやMySQLサーバを稼働させているサーバの負荷は、
特に高くなく、idleは80%くらいです。

my.cnfの設定は、添付として付けますが、特別なパラメータを設定して
いると思っていません。zabbix_server.confも標準の設定です。

MySQLのエラーログへの出力はありませんでした。

他に提供が必要な情報がありましたら、対応します。
お忙しいところ恐縮ですが、よろしくお願いいたします。

ユーザー KAZ の写真

yutaka_umeさん

MySQLで「show processlist;」を実行するとどのSQLがテーブルをロックしているのかわかるかと…

ユーザー yutaka_ume の写真

KAZさん

投稿ありがとうございます。
Webシナリオの更新中に何度かshow processlist;を実行しましたが、
以下のような結果になりました。

エラーメッセージと同じように見えますが、どのような対処が必要なのでしょうか。
お忙しいところ恐縮ですが、よろしくお願いいたします。

root@localhost:(none) 18:27:16>show full processlist;
+--------+--------+-----------+--------+---------+-------+----------+-------------------------------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+--------+-----------+--------+---------+-------+----------+-------------------------------------------------------------------------------------------------------------------------------+
| 6712 | zabbix | localhost | zabbix | Sleep | 14 | | NULL |
| 6714 | zabbix | localhost | zabbix | Sleep | 19 | | NULL |
| 6715 | zabbix | localhost | zabbix | Sleep | 1 | | NULL |
| 6716 | zabbix | localhost | zabbix | Sleep | 24 | | NULL |
| 6717 | zabbix | localhost | zabbix | Sleep | 19 | | NULL |
| 6718 | zabbix | localhost | zabbix | Sleep | 4 | | NULL |
| 6719 | zabbix | localhost | zabbix | Sleep | 14 | | NULL |
| 6720 | zabbix | localhost | zabbix | Sleep | 1 | | NULL |
| 6723 | zabbix | localhost | zabbix | Sleep | 14360 | | NULL |
| 6725 | zabbix | localhost | zabbix | Sleep | 49 | | NULL |
| 6737 | zabbix | localhost | zabbix | Sleep | 40 | | NULL |
| 105775 | zabbix | localhost | zabbix | Sleep | 3560 | | NULL |
| 107160 | zabbix | localhost | zabbix | Sleep | 3561 | | NULL |
| 107807 | zabbix | localhost | zabbix | Sleep | 435 | | NULL |
| 108313 | zabbix | localhost | zabbix | Sleep | 7160 | | NULL |
| 112006 | zabbix | localhost | zabbix | Sleep | 21560 | | NULL |
| 112397 | zabbix | localhost | zabbix | Sleep | 5 | | NULL |
| 112495 | zabbix | localhost | zabbix | Sleep | 75 | | NULL |
| 112500 | zabbix | localhost | zabbix | Sleep | 195 | | NULL |
| 112509 | zabbix | localhost | zabbix | Sleep | 5355 | | NULL |
| 115111 | root | localhost | NULL | Query | 0 | init | show full processlist |
| 115113 | root | localhost | zabbix | Query | 16 | updating | UPDATE httptest SET httptestid='2', status='1', hostid='10105', name='httpシナリオ', templateid='1' WHERE httptestid='2' |
+--------+--------+-----------+--------+---------+-------+----------+-------------------------------------------------------------------------------------------------------------------------------+
22 rows in set (0.00 sec)

ユーザー KAZ の写真

yutaka_umeさん

すいません、「show innodb status;」も実行して頂けますか?

ユーザー yutaka_ume の写真

show engine innodb status;(MySQL 5.6)を実行しましたところ、
以下の結果となりました。

あまり知識がなく、お手数ですが、何かわかりますでしょうか。

mysql tables in use 1, locked 1
LOCK WAIT 5 lock struct(s), heap size 1184, 8 row lock(s), undo log entries 7
MySQL thread id 115399, OS thread handle 0x7fa303d75700, query id 6840837 localhost root updating
UPDATE httptest SET httptestid='2', status='1', hostid='10105', name='httpシナリオ', templateid='1' WHERE httptestid='2'
------- TRX HAS BEEN WAITING 7 SEC FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 131 page no 3 n bits 88 index `PRIMARY` of table `zabbix`.`httptest` trx id 3187664 lock_mode X locks rec but not gap waiting
Record lock, heap no 3 PHYSICAL RECORD: n_fields 17; compact format; info bits 0
0: len 8; hex 0000000000000002; asc ;;
1: len 6; hex 0000002369c1; asc #i ;;
2: len 7; hex 7c000009c10858; asc | X;;
3: len 16; hex 68747470e382b7e3838ae383aae382aa; asc http ;;
4: len 8; hex 00000000000001eb; asc ;;
5: len 4; hex d5225a73; asc "Zs;;
6: len 4; hex 8000003c; asc <;;
7: len 4; hex 80000000; asc ;;
8: len 0; hex ; asc ;;
9: len 30; hex 4d6f7a696c6c612f352e302028636f6d70617469626c653b204d53494520; asc Mozilla/5.0 (compatible; MSIE ; (total 188 bytes);
10: len 4; hex 80000000; asc ;;
11: len 0; hex ; asc ;;
12: len 0; hex ; asc ;;
13: len 8; hex 0000000000002779; asc 'y;;
14: len 8; hex 0000000000000001; asc ;;
15: len 0; hex ; asc ;;
16: len 4; hex 80000001; asc ;;

ユーザー KAZ の写真

yutaka_umeさん

httptestテーブルで行ロックかかってますね…

ただ、show full processlist;でstateがLockedが無いんですよね…
気になるのは「show full processlist;」で取得したid:115113ですが、Userがrootなんですよね…
stateがsleepなのはZabbixサーバからの接続だと思います。

Zabbix Web GUIからの接続はrootユーザ?A(^^;
通常はzabbixで接続すると思うのですが…

MySQLの再起動できますか?
できるならMySQL再起動してみてください。

それで直るなら、Webシナリオの更新処理でトランザクション開始して終了ができなかったのかも…

ユーザー yutaka_ume の写真

KAZさん、指摘ありがとうございます。投稿数1000ですね。

>Zabbix Web GUIからの接続はrootユーザ?A(^^;
>通常はzabbixで接続すると思うのですが…
確かにrootユーザだったので、zabbixで接続するように修正しました。

zabbixユーザに修正し、再度Webシナリオの実行中に、「show full processlist;」にて確認したところ
ユーザは、zabbixとなっていましたが、更新はできませんでした。

| 19 | zabbix | localhost | zabbix | Query | 93 | updating | UPDATE httptest SET httptestid='2', status='1', hostid='10105', name='httpシナリオ', templateid='1' WHERE httptestid='2' |

>MySQLの再起動できますか?
>できるならMySQL再起動してみてください。

MySQLを再起動して、3度試しましたが、事象は変わりませんでした。

>それで直るなら、Webシナリオの更新処理でトランザクション開始して終了ができなかったのかも…
Webシナリオの更新間隔が60となっているので、更新の間で実行してみることになりますかね。
3度試してもだめでしたが、また何度か試して、事象が変化するか確認してみます。

ありがとうございます。