Rails, Ruby

Ruby Enterprise Edition + Passenger2.0 RC1 でRailsを高速化?

2008/06/15

mod_railsで有名なオランダのPhusion社から Ruby Enterprise Edition がリリースされたので、早速Passenger(mod_rails)と組み合わせて試してみました。

Ruby Enterprise Edition は、Rails に最適化されたRubyのようです(An enhanced garbage collector. An improved memory allocator. )。

インストールはいたって簡単で、指定したディレクトリに(gemも)すべて展開されるため、既存のRubyとの併用も可能です。またアンインストールしたければそのディレクトリを削除すればいいだけです。

Ruby Enterprise Edition のインストール

Ruby Enterprise EdtionはPassengerとの組み合わせでメモリ使用量を33%減にできるようですので、ちょっと期待して使ってみました。

1
2
3
4
5
6
7
8
9
10
# wget http://rubyforge.org/frs/download.php/38084/ruby-enterprise-1.8.6-20080507.tar.gz
# tar zxvf ruby-enterprise-1.8.6-20080507.tar.gz
# ./installer
 
......
 
Where would you like to install Ruby Enterprise Edition to?
(All Ruby Enterprise Edition files will be put inside that directory.)
 
[/usr/local/ruby-enterprise/] :インストールするディレクトリを指定

installerを起動すると、どこに設置するのか(line.10)聞かれてインストールが始まります。途中でRailsもインストールされます(すこし時間がかかりました)。

Passenger(mod_rails) 2.0 RC1 のインストール

ここを参考に。

gemでインストール

2.0RC1はpassenger-1.9.0となっているようです。まずはここからダウンロードしておきます。下記のようにさきほどインストールしたRuby Enterprise Editionを利用してgemでインストール。

1
2
# cd /usr/local/ruby-enterprise/
# ./bin/ruby ./bin/gem install passenger-1.9.0.gem

これでRuby Enterprise Editionディレクトリ内にpassengerが配置されます。

Apacheの設定

次にRuby Enterprise Editionディレクトリ内のbin配下にpassenger-install-apache2-moduleというスクリプトを叩きます。

1
2
# cd /usr/local/ruby-enterprise/
# ./bin/passenger-install-apache2-module

ずらずらとメッセージが出てきて、httpd.confへの編集を促されるので、下記をhttpd.confなどに追記します。Ruby Enterprise Editionをインストールしたディレクトリによってパスは変わるので注意してください。また、デフォルトでproductionとして起動しますが、もしdevelopmentで起動したいなら『 RailsEnv development』を追記してください(Configuring Passengerを参照)。

LoadModule passenger_module /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-1.9.0/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-1.9.0
PassengerRuby /usr/local/ruby-enterprise/bin/ruby

ヴァーチャルホストの設定は下記の通りです。DocumentRootはRailsアプリのpublicディレクトリを指定します。

<VirtualHost *:80>
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public
</VirtualHost>

起動

これで設定は完了なはずです。Apacheを再起動して設定ファイルを反映して、アクセスしてみます。productionだとエラーがわかりづらいので、最初はdevelopmentで起動した方がいいのかもしれません。

ぼくの環境の場合、普段使っているgemに入っているものが、Ruby Enterprise Editionのgemに入っていなかったため、エラーが起きてしまいました。その場合は、こっちのgemで再インストールを行います。

1
2
# cd /usr/local/ruby-enterpriise
# ./bin/ruby ./bin/gem install <パッケージ>

メモリ使用量の比較

scaffoldしてから、ちょっと手を加えた程度の小さいアプリを動かしてみたところ、140Mくらい利用しているみたいです。増井さんの記事 (素Ruby + Passenger 1.x系)とあまり変わらない。。。うーむ、設定を間違えたのでしょうか。。アプリも環境も異なるので、後ほどmongrelなどと比較してみたいと思います。


related posts


tags

, , ,


have your say

Add your comment below, or trackback from your own site. Subscribe to these comments.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

:

:


« フレキシブルなto_xml
» iPhone へアドレスブックの内容を整形してインポートする