MySQL server has gone awayエラーについて
下記のエラーログを出力し
エージェントとの通信が取れなくなる事象が最近頻発してきているため相談させて頂きます。
エージェントとの通信は、発生後10分程度で復旧します。
事象は正系、副系があるホスト(正系、副系共に同一設定にしてIPの付け替えで切り替える方式をとっております)
へのping失敗時に起こっている様に見受けられるため
別の検証機で同じような構成を作り検証してみたのですが下記のようなエラーは出ないため
原因が分からず苦慮しております。
mysqld.logには何も出力されておりませんでした。
エラー回避の為の設定方法などアドバイスを頂きたいです。
よろしくお願いいたします。
■zabbix_server.log ※通信が取れなくなったのは「HostA」です
-----------------------------------------
25483:20130730:190158.541 [Z3005] Query failed: [2006] MySQL server has gone away [begin;]
25483:20130730:190158.548 Zabbix Host [HostA]: another network error, wait for 15 seconds
25485:20130730:190213.272 Sending list of active checks to [xx.xx.xx.xx] failed: host [HostB] not monitored
25483:20130730:190213.552 [Z3005] Query failed: [2006] MySQL server has gone away [begin;]
25483:20130730:190213.561 Zabbix Host [HostA]: another network error, wait for 15 seconds
25483:20130730:190228.582 [Z3005] Query failed: [2006] MySQL server has gone away [begin;]
25483:20130730:190228.616 Zabbix Host [HostA]: another network error, wait for 15 seconds
25501:20130730:190243.398 Web scenario step [HostA_01:HostA_01] error: error doing curl_easy_perform: Couldn't resolve host name
25483:20130730:190243.634 [Z3005] Query failed: [2006] MySQL server has gone away [select distinct t.triggerid,t.type,t.value,t.error from hosts h,items i,functions f,triggers t where h.hostid=i.hostid and i.itemid=f.itemid and f.triggerid=t.triggerid and t.status=0 and i.status=0 and not i.key_ like 'status' and not i.key_ like 'icmpping%' and h.hostid=10287]
-----------------------------------------
■環境
Zabbixサーバ:zabbix-1.8.5-1.el5.JP.x86_64
OS:Amazon Linux AMI release 2011.02.1.8 (beta)
Zabbixエージェント:zabbix-agent-1.8.16-1.el5.JP.x86_64
OS:Amazon Linux AMI release 2013.03
■MySQL設定ファイル内容
[mysqld]
user = mysql
port = 30010
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-error = /var/log/mysqld/mysqld.log
log_slow_queries = /var/log/mysqld/myslow.log
long_query_time = 3
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
max_connections = 500
innodb_file_per_table
innodb_buffer_pool_size = 64M
innodb_log_file_size = 16M
innodb_log_files_in_group = 2
expire_logs_days = 1
■Mysqlのtimeoutに関するパラメータ
mysql> show variables like '%timeout';
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
TNK - 投稿数: 4769
「エージェントとの通信が取れなくなる事象」と書かれていますが、
ZabbixサーバとMySQLとの接続で「MySQL server has gone away」
が発生する事象の問題ということでよろしいですか?
「MySQL server has gone away」であれば、MySQLの負荷が高く、
Zabbixサーバからの要求に対して応答が遅れた場合にも発生する
場合があります。
対象のサーバの負荷状況は監視されていますか?
されていたならば、負荷状況はいかがでしたか?
もし、そのタイミングで冗長化の系の切り替わりが発生していたな
らば、冗長化の方式によっては、TCP/IPのコネクションは維持され
ない場合もありますので、そのような方式の場合は、切り替わり時
には一時切断されてしまいます。
Zabbixサーバ側から自動的に接続をリトライするようにはなってい
ますので、そのリトライタイミングでMySQLへの接続は回復され、
そのまま継続して監視を行うようになっているはずです。
ご確認ください。
moritake - 投稿数: 10
ご返答頂きありがとうございます。
>ZabbixサーバとMySQLとの接続で「MySQL server has gone away」
>が発生する事象の問題ということでよろしいですか?
はい。その事象が発生する原因について教えていただきたいです。
>「MySQL server has gone away」であれば、MySQLの負荷が高く、
>Zabbixサーバからの要求に対して応答が遅れた場合にも発生する
>場合があります。
上記の事象はMySQL側のパラメータ調整で解消できるものなのでしょうか?
また、パラメータ調整で対応可能なのであれば
どの項目を調整すればよいのか教えていただけますでしょうか?
>対象のサーバの負荷状況は監視されていますか?
>されていたならば、負荷状況はいかがでしたか?
エラー出力時のZabbixサーバの負荷状況は以下となります。
CPU使用率:約75%
メモリ使用率:約65%
アイテム数:2630
1秒あたりの監視項目数:13.4
以上、よろしくお願いいたします。
TNK - 投稿数: 4769
MySQLのパラメータ調整だけで解決できるかはわかりません。
EC2を利用されているのであれば、インスタンスタイプは何を選択
されているのでしょうか?
搭載メモリサイズと現時点の他のプロセスで必要としているメモリ
サイズによっては、メモリのチューニングで少しは改善できるかも
しれません。
あと、障害発生時にiowaitとかstealなどのCPU utilizationの状況
はいかがでしたか?
また、MySQLのチューニングではなく、Zabbixサーバを最新版(1.8.17
or 2.0.7)にアップデートすることで、改善するかもしれません。
バージョンアップすることで、
・脆弱性対策を含む不具合修正
・キャッシュを利用したDBアクセス頻度の大幅削減
など、様々な不具合の修正だけではなくパフォーマンスが大幅に改
善されていますので、バージョンアップされることを強くお勧めし
ます。
moritake - 投稿数: 10
>EC2を利用されているのであれば、インスタンスタイプは何を選択
>されているのでしょうか?
インスタンスタイプはm1.largeを利用しております。
>あと、障害発生時にiowaitとかstealなどのCPU utilizationの状況
>はいかがでしたか?
いずれも1%未満で特に影響を与えるほどではありませんでした。
>また、MySQLのチューニングではなく、Zabbixサーバを最新版(1.8.17
>or 2.0.7)にアップデートすることで、改善するかもしれません。
ありがとうございます。
MySQLのチューニングで改善できない場合など検討してみようと思います。
とりあえず現在は、事象は落ち着いてきているため
MySQLのチューニングなどをしながらしばらくは様子を見てみます。
ご対応いただきありがとうございました。