mysql:16013
From: ayako hiroe <ayako hiroe <roeaya03@xxxxxxxxxx>>
Date: Thu, 1 Aug 2013 02:17:19 +0900
Subject: [mysql 16013] Re: 数百万件のload data infileの繰り返し中にmysqldがハング
yokuさん 広江です。 お忙しい中、ご指摘、参考URLなど本当にありがとうございます。 mysql> SHOW ENGINE INNODB STATUS\G はload data中に実行して、みてみるということですよね? やってみます。 O_DIRECTも見逃していました。 これもやってみます。O_DIRECTについて資料を読んだところメモリの半分はbufferpoolに 割り当てているので有効なかんじがします。 「漢のコンピュータ道」はちょくちょく読んでいましたが このページは見ていなくて、読んだところ見逃していた点がいくつかあります。 施策がなくなっていたところなので大変ありがたいです。 ありがとうございます。 2013年7月31日 20:18 yoku ts. <yoku0825@xxxxxxxxxx>: > 広江さん、こんばんは。 > > 結構食いきられているのですね。。 > InnoDBログは引き剥がされていませんか? > > mysql> SHOW ENGINE INNODB STATUS\G > .. > --- > LOG > --- > Log sequence number 10965497616 > Log flushed up to 10965497616 > Last checkpoint at 10965497616 > .. > > (Log sequence number) - (Last checkpoint at)が3GiBに近付いているようだと、 > チェックポイントで世界が止まっているかも知れません > (現在の広江さんの設定では、この値が3GiBに到達すると更新動作が全てブロックされます) > > 加えてinnodb_flush_method= > O_DIRECTとすると、ファイルシステムでダブルキャッシュされなくなりメモリが有効に使えるかも知れません。 > > 他にもロード時間を短縮するためのオプションを奥野さんが詳しく解説されていますので、ご参考までに。 > http://nippondanji.blogspot.jp/2010/03/innodb.html > > > yoku ts. > > 2013年7月31日 16:52 ayako hiroe <roeaya03@xxxxxxxxxx>: > > yokuさん 大垣さん > > ご返信ありがとうございます。 > > 広江です。 > > > > メモリは32GB積んでいて、バッチ動かす前は使用メモリが18GBぐらいなのが > > バッチ実行後2時間ほどで32GBフル+スワップ100MBほど使っているようです。 > > > > Linuxの場合、スワップ発生は当然と思っていましたが認識が間違っているのでしょうか。 > > 現在innotopをインストールして情報を集めようと、見方を調べているところです。 > > > > yokuさん > > なるほどです、 > > innodb_buffer_pool_size は19G->16Gに下げ > > innodb_log_buffer_size を8M->64Mにあげてやってみようと思います。 > > > > > > 大垣さん > > 「mysqlをデバッグビルド」というのはもしやC言語の知識が必要でしょうか? > > 勉強不足でおはずかしい限りですが。 > > プロセスをps -efでみると > > mysqld <defunct>になっていてkillしてもスルーされゾンビでした。 > > > > > > > > > > > > > > > > 2013年7月31日 15:45 Yasuo Ohgaki <yohgaki@xxxxxxxxxx>: > > > >> 大垣です。 > >> > >> 他の方が指摘されているようにメモリが足りないのかも知れませんが、 > >> 本当にハングしているならmysqlをデバッグビルドしてgdbでアタッチ > >> して調べると原因が分かると思います。 > >> > >> -- > >> Yasuo Ohgaki > >> yohgaki@xxxxxxxxxx > >> > >> > >> 2013/7/30 ayako hiroe <roeaya03@xxxxxxxxxx> > >>> > >>> お世話になります。 > >>> 広江彩子と申します。 > >>> > >>> サーバー移行のため数億件のレストアテストをしております。 > >>> 300万件ずつのtab区切りプレインテキストのダンプを > >>> バッチで何度もload infeを繰りかえしているうちmysqldが突然ハングします。 > >>> > >>> ハングの具体的な現象は > >>> ・load中のCPU使用率からすると突然それが下がる > >>> ・mysql関連のコマンドがすべてハング(killするしかない) > >>> ・mysqladmin shutdownもハング > >>> ・mysqldのスクリプトを実行してもハング > >>> > >>> 上記のような状態になると結局killallなどするしかありません。 > >>> エラーログはハングの時点では何も吐いていません。 > >>> killallでmysqldのプロセスを停止するので、システムをリブートしてmysqld startするときに > >>> リカバリ・ロールバックプロセスががんがん走るのをエラーログが吐いているようになります。 > >>> > >>> バッチをまわし始めるとだんだん使用メモリが増え、しばらくするとスワップが発生します。 > >>> それが原因かもわかりません。 > >>> innodb使用です。 > >>> > >>> 何かお気づきの方がおられましたら > >>> ご教授いただけますと幸いです。 > >>> > >>> > >>> > >>> OS: > >>> Linux CentOS release6.4 > >>> > >>> MySQL: > >>> MySQL 5.5.32 Remi > >>> > >>> ロケール: > >>> utf8 > >>> > >>> my.cnf > >>> > >>> [mysqld] > >>> innodb_file_per_table > >>> back_log = 50 > >>> max_connections = 500 > >>> max_connect_errors = 10 > >>> table_open_cache = 2048 > >>> max_allowed_packet = 16M > >>> binlog_cache_size = 1M > >>> max_heap_table_size = 64M > >>> read_buffer_size = 512M > >>> read_rnd_buffer_size = 1M > >>> ted per thread if sort is needed. > >>> sort_buffer_size = 8M > >>> join_buffer_size = 8M > >>> thread_cache_size = 180 > >>> thread_concurrency = 8 > >>> query_cache_size = 64M > >>> query_cache_limit = 2M > >>> > >>> ft_min_word_len = 4 > >>> > >>> default-storage-engine = InnoDB > >>> thread_stack = 192K > >>> transaction_isolation = REPEATABLE-READ > >>> tmp_table_size = 64M > >>> > >>> binlog_format=mixed > >>> slow_query_log > >>> log-error=/var/log/myerror.log > >>> log-warnings=1 > >>> long_query_time = 120 > >>> key_buffer_size = 32M > >>> bulk_insert_buffer_size = 64M > >>> myisam_sort_buffer_size = 128M > >>> myisam_max_sort_file_size = 10G > >>> myisam_repair_threads = 1 > >>> > >>> myisam_recover > >>> innodb_io_capacity=2000 > >>> innodb_additional_mem_pool_size = 16M > >>> innodb_buffer_pool_size = 19G > >>> > >>> innodb_data_file_path = ibdata1:10M:autoextend > >>> innodb_write_io_threads = 8 > >>> innodb_read_io_threads = 8 > >>> innodb_thread_concurrency = 16 > >>> > >>> innodb_flush_log_at_trx_commit = 1 > >>> innodb_log_buffer_size = 8M > >>> > >>> innodb_log_file_size = 1G > >>> innodb_log_files_in_group = 3 > >>> > >>> innodb_max_dirty_pages_pct = 90 > >>> innodb_lock_wait_timeout = 120 > >>> > >>> > >>> [mysqldump] > >>> quick > >>> > >>> max_allowed_packet = 16M > >>> default-character-set=utf8 > >>> > >>> [mysql] > >>> no-auto-rehash > >>> > >>> # Only allow UPDATEs and DELETEs that use keys. > >>> #safe-updates > >>> default-character-set=utf8 > >>> > >>> [myisamchk] > >>> key_buffer_size = 512M > >>> sort_buffer_size = 512M > >>> read_buffer = 8M > >>> write_buffer = 8M > >>> > >>> [mysqlhotcopy] > >>> interactive-timeout > >>> > >>> [mysqld_safe] > >>> open-files-limit = 8192 > >>> > >> > > > >
@ 16007 2013-07-30 14:25 [ayako hiroe <roeaya0] 数百万件のload data infileの繰り返し中にmysqldがハング 16008 2013-07-31 15:37 ┣["yoku ts." <yoku0825] @ 16009 2013-07-31 15:45 ┗[Yasuo Ohgaki <yohgak] Re: [mysql 16007] 数百万件のload data infileの繰り返し中にmysqldがハング @ 16010 2013-07-31 16:52 ┗[ayako hiroe <roeaya0] Re: 数百万件のload data infileの繰り返し中にmysqldがハング @ 16011 2013-07-31 19:20 ┣[Yasuo Ohgaki <yohgak] Re: [mysql 16010] Re: 数百万件のload data infileの繰り返し中にmysqldがハング @ 16014 2013-08-01 02:23 ┃┗[ayako hiroe <roeaya0] Re: 数百万件のload data infileの繰り返し中にmysqldがハング @ 16015 2013-08-01 06:08 ┃ ┣[Yasuo Ohgaki <yohgak] Re: [mysql 16014] Re: 数百万件のload data infileの繰り返し中にmysqldがハング 16016 2013-08-02 22:58 ┃ ┗[とみたまさひろ <tomm] @ 16017 2013-08-03 14:47 ┃ ┗[ayako hiroe <roeaya0] 16012 2013-07-31 20:18 ┗["yoku ts." <yoku0825] -> @ 16013 2013-08-01 02:17 ┗[ayako hiroe <roeaya0]