mixiがはまったmemcached(or libevent?)の問題を調べる人たち
解析大会に参戦するべくmemcached-1.4.4 + libevent-1.3bでビルドしてみた。ただ、明日の朝の会議をこなさないといけないので、続きは明日の午後。
2010-08-13 00:09:08@kzk_mover accept(2)が EMFILE で失敗するなら、kernel の中で fd の確保に失敗してるケースだと思うよ。malloc()ってことはないと思うけどなぁ。こんな古いの関係ないよねぇ? http://bit.ly/cfzN3j
2010-08-13 00:14:23@thatsdone あ、EMFILEとmallocは関係ないですよ。そもそも event loop を抜ける現象をまだ再現させれていないという。memcachedのバグ報告を漁るのは良さそうですねえ。
2010-08-13 00:16:27@thatsdone あと、今回は1.4.4なので "This is fixed in 1.2.8 and dev" は関係なさそうな気がします。
2010-08-13 00:17:17うお!Thanks!こちらの検証環境についての詳細も明日ブログにあげれるか担当者と相談します RT @kzk_mover: とりあえず今のところの調査履歴をblogに書いてみた > http://bit.ly/bSGMYi #mixi
2010-08-13 01:11:56ニコニコのコメントサーバーは広場で結構セッション数あるけど、とりあえずlibeventではなく生でepoll使ってるからlibeventの問題については影響なさそうだ
2010-08-13 01:51:32@nealsato 接続数が増えた時のあからさまなメモリ破壊を発見しました。-cを超えた時に発動します。新しいlibeventでは色々治っているみたいなので、素直にlibeventをupgrade=>検証するのも筋かもです... > http://bit.ly/ceQmgP
2010-08-13 03:09:06ほんとDA! 修正しました! > http://bit.ly/ceQmgP RT @tasukuchan: @kzk_mover epoll.c:167 while(nfds < max) もイコール入れたほうがいいYO!
2010-08-13 08:25:55無言 + no core dumpで落ちるとの事だけど、libevent+ memcached共にexit前は必ずstderrにログを吐いているように見えた. 情報が出ないとなんとも言えないな... > http://bit.ly/aMgcWo
2010-08-13 08:36:10@kzk_mover @nealsato 手元の環境でmemcached-1.4.4&libevent-1.3bでcoredumpせずに無言で落ちる現象が確認できました。でも、はてなで使っているmemcached-1.4.0&libevent-1.1aでは発現せず。
2010-08-13 09:29:58ちなみにカーネルは、CentOS 5.3の2.6.18-128.4.1.el5xenです。クライアントは、Cache::Memcached::Fastで、45台 x 100プロセスで、デフォルト設定で起動したmemcachedに負荷をかけてみました。
2010-08-13 09:34:32再現確認ありがとうございます!引き続きlibevent内の調査をしてます RT @stanaka: @kzk_mover @nealsato 手元の環境でmemcached-1.4.4&libevent-1.3bでcoredumpせずに無言で落ちる現象が確認できました。...
2010-08-13 11:47:44@kzk_mover メモリ破壊もあったのですね!memcached関連のircでも最新版をオススメされましたが、kernel/gcc/libcあたりもまとめて最新版にする必要がありそうです。
2010-08-13 11:55:53@nealsato すいません、memcached-1.4.0+libevent-1.1bで落ちなかったのは、試行回数不足でした。繰り返していたら、こちらでも落ちることが確認されました。
2010-08-13 12:15:12libeventを1.4系の最新の1.4.14bにしたら、「[err] event_queue_remove: 0x15ea9d88(fd 30) not on queue 8」というエラーが出るようになった。MLでも報告があるみたい http://htn.to/fKenq3
2010-08-13 13:54:03@yamaz sysctlの値を取得してみました。ほぼCentOS 5.3のデフォルトのままになってます。 http://gist.github.com/522314
2010-08-13 13:58:13@stanaka うちはfs.file-maxを極端に大きくしてます http://bit.ly/c2CN5s 理由としては秒間数万リクエストを捌く際にソケットがTimewait状態で残ってFDを使い尽くすのを恐れるからです。
2010-08-13 14:28:26memcachedのstats settings初めて知った! @tmaesakaの連載にあるのに! http://bit.ly/cJlQ2p
2010-08-13 16:01:09memcachedのstatsのcurr_connections ってのは若干わかりにくいよね、実際は開いているFDS
2010-08-13 16:02:24memcachedとlibeventの問題について詳細をアップしました - http://alpha.mixi.co.jp/blog/?p=2109
2010-08-13 17:57:45