金利0無利息キャッシング – キャッシングできます

 | 

2010-08-17

memcachedos.plというのを書いた

21:50 | memcachedos.plというのを書いた - 金利0無利息キャッシング – キャッシングできます を含むブックマーク はてなブックマーク - memcachedos.plというのを書いた - 金利0無利息キャッシング – キャッシングできます

某大手SNSの障害に関連してmemcachedに負荷をかけるツールを書いたので一応書いておく。

最大接続数に達しているときに高速で接続/切断を繰り返すとmemcachedが終了してしまうというもの。

最大10000コネクション試行して、statsコマンド発行する。接続に失敗するか900コネクション以上いってたら切断するという処理。AnyEventを使っている。

http://gist.github.com/522741

クライアント側のCPUコア数に合わせて適当に複数プロセス起動すればより効率的に負荷がかけられるでしょう。手元の環境では数分で安定して落とすことができるけど、サーバーのスペックなんかによっては再現できないかもしれない。

memcachedとlibeventのどちらの問題なのかとか、どこ修正すべきなのかとかは俺の専門ではないので判断しかねる。

動機と目的

  • 実際に発生する問題なのかどうか確かめたかった
  • 沢山サーバー稼働させて再現させてたりして大変そうだったので。
  • 問題解決能力のある人の手元でバグが再現できないと修正されなかったりするので簡単に再現できる必要があると思った

わかったこと

  • memcached1.4.5+libevent1.4.7 on CentOS 4.6 → 落とせた
  • memcached1.4.4+libevent1.4.9 on CentOS 5.4 → 落とせた
  • memcached1.2.6 → 落とせなかった
  • 落ちるときには [err] event_queue_remove: 0x8ab54e0(fd 26) not on queue 8 といったログを吐く。
    • libeventのバージョンが古いとエラーログでないらしい。
  • 最初サーバーとクライアントを別ホストでやってたけど1台だけでも再現できた。
  • デフォルト設定(-c 1024)では1プロセスでも落とせた。
  • memcached -c 15000 などして最大接続数を引き上げた場合は、落とせなくなった。
    • 接続数が足りなくなるように複数プロセス立ち上げれば落とせた。
  • 不安要素は「ただの高負荷時」でも落ちるのかどうか?なのだけど、最大接続数が足りているのであれば恐らく落ちない。今のところ再現できない。
  • 自社サービスで問題が起きうるかどうか → 問題起きないバージョン使ってる or デフォルト設定で接続数足りてるか、足りないサービスについては-cが大きな数値に増やしてあった。

お願いしたいこと

  • プロトコルが何であれDoSになるので、管理外のサーバーに対して実行するのはやめましょう。
  • memcachedは不安定ではないし、多くの大規模なサイトで使われています。FUDはやめましょう。

一般向けの広報はあくまで「キャッシュサーバーが云々、データベースが云々」なのであって、具体的なプロダクト名を上げるのは技術者向けの情報共有で、コミュニティへのフィードバックです。「memcachedが悪い」とか「memcachedのせい」とか、ましてや責任転嫁とかそういう性質のものではないし、そういう捉え方をするのはとても失礼なので、やめて欲しいなーと思いました。

何か間違ってたり、修正されたりしたら適当なタイミングで追記します。

追記

詳細な再現条件と原因が判明、そんなわけでコネクション数が足りてる場合は起きません。すぐに修正されるわけではないので運用でカバーしましょう。

mixiの人がmemcachedMLに報告済み。

そんなことよりグローバルIP持ってるサーバーで外からmemcachedにアクセス出来ないようにとか気をつけたほうが良いですよ!!

ログがうるさすぎるの直したのと、余計なモジュールuseしてるの消したのと、自前でfork機能を入れておきました。小ネタは消した。

http://gist.github.com/522741

LalaineLalaine2011/12/14 11:16Deep tuhoght! Thanks for contributing.

sffwfewfnnsffwfewfnn2011/12/14 21:22xnDDtU <a href="http://luwfdwjkeynq.com/">luwfdwjkeynq</a>

braagjdymibraagjdymi2011/12/15 22:41p5pVzg , [url=http://oobluehlvayu.com/]oobluehlvayu[/url], [link=http://nbvqgyauqdkf.com/]nbvqgyauqdkf[/link], http://qvgdinypctjc.com/

bjrioxstiubjrioxstiu2011/12/17 01:33ddGc4d , [url=http://gznjuopokrkk.com/]gznjuopokrkk[/url], [link=http://ikzyhtsktpve.com/]ikzyhtsktpve[/link], http://vlnfwalyfhyz.com/

JohnJohn2013/09/30 17:23That's an inegtlielnt answer to a difficult question xxx

DuniaDunia2013/10/01 16:32Hey, that's pouewfrl. Thanks for the news.

ManuelManuel2013/10/17 14:51Just what the doctor <a href="http://brpweaw.com">orddeer,</a> thankity you!

MiaMia2013/10/20 15:56So true. Honesty and everything recignozed. http://aoiqzmhi.com [url=http://duuahb.com]duuahb[/url] [link=http://xlxnkzunx.com]xlxnkzunx[/link]

RamonRamon2013/11/04 03:43You're the <a href="http://qoyyuwjun.com">graseett!</a> JMHO

LiviaLivia2013/11/12 21:56The <a href="http://mwvsiunqz.com">pusreachs</a> I make are entirely based on these articles.

AhmedAhmed2013/11/14 10:26This is both street smart and inletligent. http://zaqxgqhc.com [url=http://blfrzuk.com]blfrzuk[/url] [link=http://bbvzfrffit.com]bbvzfrffit[/link]

AzouzAzouz2013/11/16 02:14Great article but it didn't have <a href="http://qjbscwhhxb.com">eviytrheng-I</a> didn't find the kitchen sink!

NathalliaNathallia2013/11/18 01:11Wow! Great to find a post knnokicg my socks off! http://yiudxfmhbua.com [url=http://iejggsciwvx.com]iejggsciwvx[/url] [link=http://yckakpfps.com]yckakpfps[/link]

トラックバック - http://subtech.g.hatena.ne.jp/mala/20100817
 |