![]()
[RailsConf2008] mod_rails is dead? 話題のRails実行環境Passenger
大井宏友です。 Ruby on Railsの実行環境はまた混沌とした状態になりつつありますが、
その中でも最近注目なのがApacheプロセスの中で動くPassnger(mod_rails)かと思います。
RailsConfではそのセッションがありました。
開発したのはオランダの企業Phusion社です。
About Phusion
Passenger(mod_rails)で起業した設立二ヶ月、平均年齢22歳の若い企業。 4人のコンピュータサイエンティストがいて、起業前から企業WEBサイトやオープンソースプロジェクトに参画。
About Phusion Passenger (mod_rails)
Apacheの中で動く、簡単で強力なRails実行環境
つくったきっかけ
Railsはアプリケーションを作るのは簡単だけど、実行環境に制約がある。なので、 PHP並みに使われるにはどうしたらいいか考えて、もっとも普及しているWEBサーバのApacheのモジュールとして動けば、 多くのプロバイダにも採用してくれそう。
新バージョンでの改善点
旧バージョン1.xでの課題を改善している様子
大きなファイルのアップロード時のパフォーマンス
1.xでは大きなファイルをアップロードするとライlsのプロセスがロックされてしまいそれが遅い原因だった。
2.0では、アップロード専用のbufferを用意することで高速になる。
VMを減らす
1.0.5では1800MBくらい使っていたのが、2.0では300MB程度に。
Rackサポート
Passenger2.0ではRackに対応しているとのこと。つまりPassengerはRails専用ではなくなったので、彼らはこれをもって「mod_rails is dead」と言っているみたい。
ベンチマーク
次のような条件の下で、6種類の実行環境でのメモリ使用量と速度を比較してました。
条件
- 共通
-
- Intel Core 2 Duo, T5300, 1.73 GHz、2 GB Ram
- Ubuntu Linux 7.10, 32 bit
- Ruby 1.8.6
- Ruby on Rails 2.0.2
- Typo 5.0.3
-
- “Production” environment
- Page caching disabled
- SQLite 3 as database
- テストケース
-
- 20,000 requests
- 12 concurrent users
- 実行環境
-
- Apache Prefork + Passenger
- Apache Worker + Passenger
- Nginx + Mongrel
- Nginx + Thin
- Litespeed
- Apache Worker + Ruby Enterprise + Passenger
メモリ使用量
Apache Worker + Ruby Enterprise + Passengerが最少 (Nginx+Mongrelの3/4)。Apache+PassengerとNginx+Mongrelは同等。
速度
- Apache + Passenger + Ruby Enterpriseが一番高速
- Ruby Enterpriseを使わない場合でも、今多くのサイトで使われているNginx +
Mongrelより高速
(Nginx+MongrelはApache+Mongrel Clusterより高速)
そもそもRuby Enterprise Editionって何?
Rubyのメモリ管理のイケてなさをPhusion社が修正したもので、Railsアプリの場合、オリジナルより33% メモリを節約できるとのこと。
Passenger採用サイト
Passenger2.0のリリース時期
soon(本日現在、まだの様子です。)
感想
Mongrelの開発者がRubyに見切りをつけてから、RailsのDeploy環境は何だか混沌としてきたような気がしますが、 このPassengerは、Apacheプロセスで簡単に動くというところ、 また非常に若いコンピュータサイエンティストでありファーストプロダクトなのに非常に注目されていて、 これからメインストリームになりそうな予感が個人的にはしています。ちょっと試してみたいと思います。

