2008年10月31日
マイコミジャーナル:Rails 2.2 誤解多いスレッドセーフ、公開前に理解
http://journal.mycom.co.jp/news/2008/10/30/028/
によると、Jrubyを使えばネイティブスレッドになるのでプロセスは一つで良いとあります。
ただ、大規模なRailsのサービスではmongrelのプロセスを監視して落ちたら再起動するような仕組みを用意しています。
1プロセスだと落ちたら再起動されるまでに他のプロセスが存在しないためサービスが止まってしまいます。もし1プロセスで十分さばけそうでも冗長化のために複数プロセス立ち上げておいた方が良い気がしますがどうでしょうね。
それともmongrelじゃなくてGlass Fish を使えば安定するとか?
Glass Fishは使ったこと無いのですが、いままでtomcatをコンテナにしたwebサービスは多数構築してきました。クラスタリングを導入するまではいかないサービスでは、tomcatだとめったに落ちないといってもたまに落ちたときにサービスが止まってしまうんですよね。
mongrelはtomcatより不安定だったとしてもそれを前提に落ちても再起動するしくみを用意したりするので、逆にサービスは止まらなかったりします。
jrubyをつかってmongrelを複数動かしてプロセスが死んだら再起動するってのが実現できれば大規模サービスに使えそうな気がします。
によると、Jrubyを使えばネイティブスレッドになるのでプロセスは一つで良いとあります。
さらにRailsをJRubyで実行させると、スレッドがネイティブスレッドとして処理されるためプロセスが1つだけでよくなる。Rails 2.2はRuby 1.9とJRuby 1.9に対応する予定だ。どこまで実用的に使えるかはRubyと比べるとデータ不足だが、JRuby on Railsでさらに性能の引き上げを調査してみるのも悪くない選択肢だ。
ただ、大規模なRailsのサービスではmongrelのプロセスを監視して落ちたら再起動するような仕組みを用意しています。
1プロセスだと落ちたら再起動されるまでに他のプロセスが存在しないためサービスが止まってしまいます。もし1プロセスで十分さばけそうでも冗長化のために複数プロセス立ち上げておいた方が良い気がしますがどうでしょうね。
それともmongrelじゃなくてGlass Fish を使えば安定するとか?
Glass Fishは使ったこと無いのですが、いままでtomcatをコンテナにしたwebサービスは多数構築してきました。クラスタリングを導入するまではいかないサービスでは、tomcatだとめったに落ちないといってもたまに落ちたときにサービスが止まってしまうんですよね。
mongrelはtomcatより不安定だったとしてもそれを前提に落ちても再起動するしくみを用意したりするので、逆にサービスは止まらなかったりします。
jrubyをつかってmongrelを複数動かしてプロセスが死んだら再起動するってのが実現できれば大規模サービスに使えそうな気がします。
2008年10月30日
blog clip at 2008/10/30
これからRailsに関するblogのエントリをクリップしていこうかと思います。
generate/migration:add_column_to_table と remove_column_from_table
AttachmentFuプラグインの日本語対応化
Rails 2.2RCがリリースされました
rails 2.1.1 から render => :file の仕様が変わっています
Railsアプリケーション開発の基盤に「BaseApp」
Jpmobile で user_agent を設定してテストするには
P.S.
いちいちリンクを張るのがめんどくさい。専用のブックマークアプリ+ブックマークレットをつくるかなあ。。
generate/migration:add_column_to_table と remove_column_from_table
AttachmentFuプラグインの日本語対応化
Rails 2.2RCがリリースされました
rails 2.1.1 から render => :file の仕様が変わっています
Railsアプリケーション開発の基盤に「BaseApp」
Jpmobile で user_agent を設定してテストするには
P.S.
いちいちリンクを張るのがめんどくさい。専用のブックマークアプリ+ブックマークレットをつくるかなあ。。