![]() |
Ruby on Rails |
Gregg Pollack氏が3 Weeks in Rails (October 29, 2008)において次期メジャーリリースになるRuby on Rails 2.2.1についてまとめている。まずバージョン番号については説明が必要だろう。24日(米国時間)にRails 2.2 RC1が公開された。準備リリースという位置づけだがバージョン番号は2.2.0となった。このため順調に進めば次の2.2.1が正式な2.2になる。
Rails 2.2はRailsにとって注目すべきリリースになる。2.2で登場する新機能はRuby on Rails 2.2 Release Notesにまとまっているので興味がある場合はチェックしてほしい。概要でよければ3 Weeks in Rails (October 29, 2008)に大体の内容がまとまっている。
2.2の最大の特徴はスレッドセーフモードが提供されることにあるが、これには注意が必要だ。スレッドセーフになるだけであって、ネイティブスレッドで動作するようになるわけではないからだ。かといって性能があがらないというわけではない。歓迎すべきことだが多くの誤解もあるようだ。
Rails 2.2で提供されるスレッドセーフは、これまでリクエスト処理回りに存在していた粒度の荒いGiantロックを削除し、データ構造を見直して最小限の細粒度ロックに置き換えたことを意味している。Ruby on Railsのスレッドは従来どおりグリーンスレッドのままだし、ネイティブスレッドとして動作するものではない。
ではなぜスレッドセーフであることが重要かといえば、リクエスト処理が改善されるからだ。これまでGiantロックだったため一つのリクエストをさばいている間にほかのリクエストをさばけなかった。これがスレッドセーフになったため単位時間あたりに受付可能なリクエスト数が増えた。一つのRailsインスタンスでさばけるリクエスト数が増えたため、これまでプロセスとしてインスタンスを複数保持していたところを削減できる。結果として全体として性能が向上することになる。
たとえばこれまで10のRailsプロセスを動作させているとする。1プロセスあたりなんらかの単位時間あたりに処理できたリクエストが10だったとしよう。これがスレッドセーフ化されたことで1プロセスあたり20のリクエストが同じ単位時間でさばけるようになったとすれば、単純に考えれば10プロセスで単位時間あたりに200さばけることになる。またはプロセスを5つに減らしても同じリクエストが処理できるようになる。もちろんこんな単純なものではないが、大枠はそんなところだ。
さらにRailsをJRubyで実行させると、スレッドがネイティブスレッドとして処理されるためプロセスが1つだけでよくなる。Rails 2.2はRuby 1.9とJRuby 1.9に対応する予定だ。どこまで実用的に使えるかはRubyと比べるとデータ不足だが、JRuby on Railsでさらに性能の引き上げを調査してみるのも悪くない選択肢だ。
またスレッドセーフモードを有効にして実行する場合、自身が開発するソースコードもスレッドセーフで動作するように書き換える必要がある。どのように書けばいいかはPratik Naik氏がThread safety for your Rails 22において説明しているので、開発する場合には参考にするといいだろう。
| RailsにDoS脆弱性、XMLパースする全ユーザに対応推奨 [2008/8/27] |
| スレッドセーフRuby on Railsが意味することは、Rails 2.2でスレッドセーフ [2008/8/18] |
| 1,600超えるパッチ集大成、Ruby on Rails 2.1登場 [2008/6/4] |
| Rails、SubversionからGitへ - zipファイルでもOK [2008/4/15] |
| Ruby on Rails 2.0.2登場 - デフォルトDBがMySQLからSQLite3へ [2007/12/18] |
| 待望のRails 2.0登場 - 多くの機能追加と改善、パフォーマンス向上 [2007/12/10] |
| Ruby on Rails 1.2.5公開 - JSON XSS脆弱性を修正、迅速なアップグレードを [2007/10/15] |
| Rails 1.2.4登場 - 2.0での対応予定者も本バージョンで警告チェックを [2007/10/9] |
| Rails 2.0向けアダプタ登場 - Oracle、SQL Serverもサポート [2007/10/3] |
| Ruby/Rails最新版 - Ruby on Rails 1.2.3、Ruby 1.8.6公開 [2007/3/15] |
| Rails 1.2.1/1.2.0-REST志向の機能マルチバイトも、Leopard搭載も予定通り [2007/1/22] |
| Rails on OS X !? - Ruby on Rails、Mac OS X Leopardに搭載へ [2006/8/9] |
| 祝2歳!! Ruby on Rails 1.1 + MySQL Administratorで日記システムを作ろう [2006/7/29] |
| おめでとうRuby on Rails、満2歳の誕生日むかえる [2006/7/27] |
| Ruby on Railsセキュリティフィックス、全ユーザにアップグレードを推奨 [2006/6/28] |
| Ruby on Railsまたも進化、1.1 公開 [2006/3/29] |
| ついに1.0! Ruby on Rails [2005/12/15] |
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
坂本教授、木の光合成に着目した不思議な音楽的挑戦!『ETV特集』 [10:08 2/11] キャリア |
|
バロックで異端!水墨画の巨匠、雪村周継の神業に迫る! [10:07 2/11] キャリア |
|
元・宝塚の真琴つばさ、ドラマ初主演で小学生の母親役に挑戦! [10:07 2/11] キャリア |
|
「四大陸フィギュア」今夜は連覇のかかった高橋、昨年末復活した浅田、村上に注目! [10:07 2/11] キャリア |
|
【EU発!Breaking News】精神疾患治療のため?マラリア患者の血液を注射された男性。(オーストリア) [10:05 2/11] キャリア |