SlideShare a Scribd company logo
1 of 13
Download to read offline
Passenger
a panacea for Ruby web apps
         Shunichi Arai
ざっくり比較

              • 高安定性・簡単設定
    CGI
              • Rails/Gemは動かない

Rubyウェブサーバ • Railsが動く
  (mongrel等) • 低速?・管理が面倒

              • 高安定性・高速・Railsが動く
  Passenger
              • Apacheのモジュールが必要
CGI
• アクセスがあるたびに
  Rubyプログラムを
  毎回、起動する
• 起動に時間がかからな
  い作りならOK
• Railsは絶対動かない
• 毎回起動されるので、
  安定性は非常に高い
Mongrel + mod_proxy_balancer
          Apache子   HTTP

                           mongrel
          Apache子



Apache親   Apache子          mongrel


          Apache子
                           mongrel

          Apache子


          Apache子
Mongrel + mod_proxy_balancer
• Mongrel (webrick) は
  Rubyで書かれた
  ウェブサーバ
• mod_proxy_balancerは
  Apacheの提供する
  リバースプロキシ型
  ロードバランサー
• ロードバランサーで
  複数のmongrelに
  HTTPで処理を分配する
Mongrel + mod_proxy_balancer
          の問題点
              • mod_proxy_balancerは、
                処理中、停止中の
                プロセスにも配分する
                – Mongrelを再起動すると
                  しばらく表示が止まる
              • Mongrelは決まった数が
                スタートしており、
                動的な増減が不可能
                – 一部を再起動とか面倒
              • Mongrelは遅い (体感)
                – Rubyでウェブサーバって?
              • 疎結合すぎる
mod_proxy_balancer
は出来がいまいち?
Passenger
                           管理プロセス
          Apache子
           mod_passenger        Rubyプロセス

          Apache子
           mod_passenger        Rubyプロセス

Apache親   Apache子
           mod_passenger        Rubyプロセス

          Apache子
           mod_passenger        Rubyプロセス

          Apache子
           mod_passenger
Passenger
• Apacheに
  mod_passengerという
  モジュールが入る
• mod_passengerが
  rubyプロセスの
  起動・終了などを管理
• mod_passengerが
  RailsやRackなどと
  通信して処理を依頼
• Rails/Rackしか動かない
Passengerの利点
      • Global Queingにより
        応答可能サーバのみ
        アクセスされる
      • 自動で増減してくれて
        メモリが節減
      • 定期的再起動などの
        機能もある
        (Railsはメモリリークしが
        ち)
      • 安定して動く
      • 再起動が簡単
Passengerのインストール
• gem install passenger
• passenger-install-apache2-module
• Httpd.confをちょろっと書き換え
    簡単!
• 再起動は
   touch tmp/restart.txt
  とするだけ
• Deployが楽ちんになった
Passenger

More Related Content

What's hot

20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
 
本番環境で使いたいPHP
本番環境で使いたいPHP本番環境で使いたいPHP
本番環境で使いたいPHP
Takuya Sato
 

What's hot (15)

PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春
 
おすすめ gem
おすすめ gemおすすめ gem
おすすめ gem
 
Varnish
VarnishVarnish
Varnish
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
Re: WebServer BenchMarking
Re: WebServer BenchMarkingRe: WebServer BenchMarking
Re: WebServer BenchMarking
 
Ruby on Rails Tutorial Chapter11-13
Ruby on Rails Tutorial Chapter11-13Ruby on Rails Tutorial Chapter11-13
Ruby on Rails Tutorial Chapter11-13
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
Backlogでの Perlのつかいかた
Backlogでの PerlのつかいかたBacklogでの Perlのつかいかた
Backlogでの Perlのつかいかた
 
About Reauire.js
About Reauire.jsAbout Reauire.js
About Reauire.js
 
忍者ツールズのCouchbase導入事例
忍者ツールズのCouchbase導入事例忍者ツールズのCouchbase導入事例
忍者ツールズのCouchbase導入事例
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 
webアプリケーションフレームワークの話
webアプリケーションフレームワークの話webアプリケーションフレームワークの話
webアプリケーションフレームワークの話
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
本番環境で使いたいPHP
本番環境で使いたいPHP本番環境で使いたいPHP
本番環境で使いたいPHP
 

Similar to Passenger

組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
Yuichi Tateno
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
Yuuki Namikawa
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
Koichiro Ohba
 
Scalrご紹介資料 20130404 01
Scalrご紹介資料 20130404 01Scalrご紹介資料 20130404 01
Scalrご紹介資料 20130404 01
Haruhiko KAJIKAWA
 
Continuous delivery 6
Continuous delivery 6Continuous delivery 6
Continuous delivery 6
ShinyaOzawa
 
MySQL負荷分散の方法
MySQL負荷分散の方法MySQL負荷分散の方法
MySQL負荷分散の方法
佐久本正太
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
Yuuki Namikawa
 
Mod lua
Mod luaMod lua
Mod lua
do_aki
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 

Similar to Passenger (20)

Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているかマルチクラウド環境でモビンギはどのようにコンテナを動かしているか
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
 
Scalrご紹介資料 20130404 01
Scalrご紹介資料 20130404 01Scalrご紹介資料 20130404 01
Scalrご紹介資料 20130404 01
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
 
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.jsRendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
 
Continuous delivery 6
Continuous delivery 6Continuous delivery 6
Continuous delivery 6
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
MySQL負荷分散の方法
MySQL負荷分散の方法MySQL負荷分散の方法
MySQL負荷分散の方法
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
 
OSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meetingOSvのご紹介 in 
Java 8 HotSpot meeting
OSvのご紹介 in 
Java 8 HotSpot meeting
 
Mod lua
Mod luaMod lua
Mod lua
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 

Passenger

  • 1. Passenger a panacea for Ruby web apps Shunichi Arai
  • 2.
  • 3. ざっくり比較 • 高安定性・簡単設定 CGI • Rails/Gemは動かない Rubyウェブサーバ • Railsが動く (mongrel等) • 低速?・管理が面倒 • 高安定性・高速・Railsが動く Passenger • Apacheのモジュールが必要
  • 4. CGI • アクセスがあるたびに Rubyプログラムを 毎回、起動する • 起動に時間がかからな い作りならOK • Railsは絶対動かない • 毎回起動されるので、 安定性は非常に高い
  • 5. Mongrel + mod_proxy_balancer Apache子 HTTP mongrel Apache子 Apache親 Apache子 mongrel Apache子 mongrel Apache子 Apache子
  • 6. Mongrel + mod_proxy_balancer • Mongrel (webrick) は Rubyで書かれた ウェブサーバ • mod_proxy_balancerは Apacheの提供する リバースプロキシ型 ロードバランサー • ロードバランサーで 複数のmongrelに HTTPで処理を分配する
  • 7. Mongrel + mod_proxy_balancer の問題点 • mod_proxy_balancerは、 処理中、停止中の プロセスにも配分する – Mongrelを再起動すると しばらく表示が止まる • Mongrelは決まった数が スタートしており、 動的な増減が不可能 – 一部を再起動とか面倒 • Mongrelは遅い (体感) – Rubyでウェブサーバって? • 疎結合すぎる
  • 9. Passenger 管理プロセス Apache子 mod_passenger Rubyプロセス Apache子 mod_passenger Rubyプロセス Apache親 Apache子 mod_passenger Rubyプロセス Apache子 mod_passenger Rubyプロセス Apache子 mod_passenger
  • 10. Passenger • Apacheに mod_passengerという モジュールが入る • mod_passengerが rubyプロセスの 起動・終了などを管理 • mod_passengerが RailsやRackなどと 通信して処理を依頼 • Rails/Rackしか動かない
  • 11. Passengerの利点 • Global Queingにより 応答可能サーバのみ アクセスされる • 自動で増減してくれて メモリが節減 • 定期的再起動などの 機能もある (Railsはメモリリークしが ち) • 安定して動く • 再起動が簡単
  • 12. Passengerのインストール • gem install passenger • passenger-install-apache2-module • Httpd.confをちょろっと書き換え  簡単! • 再起動は touch tmp/restart.txt とするだけ • Deployが楽ちんになった