2010年12月1日水曜日

RailsをUnicornで動かしてみる

Redmineを動かしてみた

Apache + Passenger (REEで)は、起動中は素晴らしいパフォーマンスを出してくれるけど、一旦落ちると、起動するのに時間かかるし、デプロイするときに再起動しないといけない。再起動はapacheではなく、Passengerがtmp/restart.txtが生成されたタイミングでアプリを再起動してくれるからいいっちゃいいんですが、unicornはその辺もOK!と。そしてよく分からないfork型?とにもかくにも、unicornを知ってもう一年!一回くらいは試しておこうと思ってやってみました。そのうちnginxとの組み合わせもやります。

unicornのインストール

gem install unicorn

Rails2.3.5はRack1.0.4を使う

1.0.4だったっけかな?忘れましたが、1.2とか上のバージョンのが入ってると動いてくれません。アンインストールする必要があります。Rails3はRack1.2でも動きます。

起動の仕方は簡単で、RAILSアプリのルートフォルダで

unicorn_rails -D -E production
という感じです。Dオプションはデーモン、Eは環境、デフォルトはdevelopment、-cで設定ファイルのパスを渡すこともできます。

unicornは起動に失敗しても永遠と起動しようと努力するので、ちょっとその執念深さが怖かったのですw

気になるパフォーマンスは

ちゃんと取ってないけど、Passengerの方が若干早いかなという感じ(2ミリ秒くらいw)で、差はそんなにない感じです。nginxと組み合わせて、Apache + Passengerと比べてどうなるかは分かりませんが、きっとそんなにパフォーマンスに差はないんじゃないかなーと思います。なんせRedmineを3人くらいで使ってるので。これが大規模サイトになれば違うんでしょうね。githubがunicornで動いてるんじゃなかったかな?githubの中にはちゃんとチューナーがいそうなので、うまくまわってるんでしょう。

0 件のコメント: