Home > photoshare > EventMachineの速度が安定しない[解決]

EventMachineの速度が安定しない[解決]

Photo by the_amanda

 PhotoShareをRailsから、EventMachineベースの自作フレームワークに全面書き換えをしているのですが、大体作り終わりベンチマークを取っていると、概ね1msで処理しているのに、時々、数百ms掛かることがありました。

 初めはGCとか疑ったんですが、GC.disable実行しても状況変わらず。絞り込みをしていると、どうもEventMachineで詰まって居るっぽい。

 EC2上で動かしていたので、手元のマシンで試したり、LinuxじゃなくてFreeBSDで試しても同じように詰まる。同じEventMachineを使っているThinを使って、ベンチマーク取ってみても、100回に1回ぐらい、やたらレスポンスが遅い時間があるのを確認できました。

 ApacheBenchやhttperfは、平均値は取れるけど、個別のレスポンスタイムを出力する方法が見つからなかったので、JMeterに初挑戦。HTTPだけじゃなくて、いろいろなプロトコルに対応しているのがいいね。

 色々試してみると、HTTPに限らずTCPソケットサーバを作ると発生するらしく、こんなコードでも、1000回に1,2回、接続した後1000ms近く待たされることがあることが分かりました。

 MLとか探しても、同じような現象の話が出てきていない・・・。探し方が悪いのか、じつは誰もあまりまじめに使ってないのか・・・・。

 ここら辺まで原因がつかめたところで、takiuchi先生にご相談

 結局カーネルまで追って、変にselectを呼び出して居ることが判明。takiuchi先生さすが! 自分もカーネルとか追うように色々準備しておかないと駄目だなと反省。

 このコードを元に検索してみると、迷ったりしていることは分かったけど、このパッチを当てると、接続が詰まる状況が改善。

 ここ以外にも、微妙なコードが見られるので、引き続きコードを追ってみよう。

 年末の忙しい時期なのに、手伝ってくれてありがとうございました!>takiuchi先生

Related posts

masuidrive(増井 雄一郎)
PukiWikiなどのオープンソース活動を経て、2005年からRuby on Railsに的を絞り、WEB2.0社 PingKingやニフティ アバウトミーの開発に関わる。これまでのフリー活動から転身し、2007年は1年だけ会社員として働いた後、起業のため渡米。2008年4月にBig Canvas Inc.設立。現在、米ベルビュー在住。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.masuidrive.jp/index.php/2008/12/27/eventmachine/trackback/
Listed below are links to weblogs that reference
EventMachineの速度が安定しない[解決] from @masuidrive blog

Home > photoshare > EventMachineの速度が安定しない[解決]

Search
Feeds
Meta

Return to page top