読者です 読者をやめる 読者になる 読者になる

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もベンチマーク取ってみた。

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)
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)の速度は

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)

な結果に。俺は何がやりたいんだ…。