RailsのCGIモードでベンチマーク
svn headで簡単にrailsのフレームワークの一部を減らしたりできるようになった記念に、FastCGIでもmod_rubyでもwebrickでもない純粋にapacheのCGIとしてrailsを動かしたときどれほど遅いかベンチマークを取ってみた。アクション自体はrender :textでhello worldを表示させるだけの単純なもの。
サーバスペックはPen4 2.2G + Mem 1G + Apache 2.0.54でab2でオプションは-n 10 -c 1で1リクエストを10回おくってベンチ。結果は
- rails ( action_pack,active_support,active_record,action_mailer,action_web_service)
Requests per second: 0.37 [#/sec] (mean)
Time per request: 2679.260 [ms] (mean)
Time per request: 2679.260 [ms] (mean, across all concurrent requests)
- rails ( action_pack,active_support,active_record)
Requests per second: 0.59 [#/sec] (mean)
Time per request: 1694.153 [ms] (mean)
Time per request: 1694.153 [ms] (mean, across all concurrent requests)
- rails ( action_pack,active_support)
Requests per second: 0.70 [#/sec] (mean)
Time per request: 1420.252 [ms] (mean)
Time per request: 1420.252 [ms] (mean, across all concurrent requests)
うわぁ実用範囲外の遅さだね。使わないことが多いaction_mailerとaction_web_service削ってもこの遅さかぁ…。ちなみにwiki.rails2u.comもベンチマーク取ってみた。
- wiki.rails2u.com (lighttpd + fastcgi)
Requests per second: 4.45 [#/sec] (mean)
Time per request: 224.919 [ms] (mean)
Time per request: 224.919 [ms] (mean, across all concurrent requests)
- wiki.rails2u.com (lighttpd + fastcgi , ab2オプション -n 100 -c 10)
Requests per second: 12.23 [#/sec] (mean)
Time per request: 817.891 [ms] (mean)
Time per request: 81.789 [ms] (mean, across all concurrent requests)
実用十分な速度。ちなみにはてダの今の時間(23:30)の速度は
- d.hatena.ne.jp/secondlife
Requests per second: 0.40 [#/sec] (mean)
Time per request: 2469.829 [ms] (mean)
Time per request: 2469.829 [ms] (mean, across all concurrent requests)
結構重いけど、それでもフルパッケージrailsのCGI動作と同じぐらいだねp−q。
結論:CGIでrailsを動作させるとやはり重くて使い物にならない。
追記:wiki.rails2u.comのベンチマークが遅いのはrailsのせいじゃなくて俺のwikiパーサがダメダメだからじゃね?つーことで別のDBは参照のみでwikiパーサを通してレンダリング行わないページ(http://wiki.rails2u.com/misc/string_flections )でベンチマーク取ったところ
Requests per second: 6.93 [#/sec] (mean)
Time per request: 144.309 [ms] (mean)
Time per request: 144.309 [ms] (mean, across all concurrent requests)
な結果にp−q。つーかいままでlocalhostじゃなくて外部からabやってたよ!localhostからやると
Requests per second: 36.47 [#/sec] (mean)
Time per request: 27.421 [ms] (mean)
Time per request: 27.421 [ms] (mean, across all concurrent requests)
な結果に。俺は何がやりたいんだ…。