Develop with pleasure!

福岡でCloudとかBlockchainとか。

Passenger入れてみた。

RailsのサーバをPassengerにしてみた。

Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 | Redmine.JP

↑のBlogに詳しく記載されてるのを参考にインストール。

いざ、Apacheを再起動すると403エラーが発生する…。
ApacheのVirtualHostの設定の中で、ディレクティブでAllow from allと設定すると、ちゃんと見れるようになった。

これに合わせて、Capistranoのdeploy.rbも書き換えようと思ったら、PassengerってそもそもApacheのプロセスとして動作しているので、起動/停止をしようとすると、そもそもApacheの起動/停止になる。なのでPassengerの場合は起動/停止というよりは、再起動がメインになる。

再起動したい場合は、$RAILS_ROOT/tmp/直下にrestart.txtというファイルを配置するだけ。既に配置されている場合はtouchコマンド等でファイルのタイムスタンプを更新する。そのため、deploy.rbでも再起動タスクとして、

task :restart, :roles=>:app do
  run "touch #{current_path}/tmp/restart.txt"
end

といったタスクを定義しておけばOK。


Passengerでは、アクセス状況によって自動的にRailsインスタンスを起動/停止してくれ、各インスタンスのポート番号を気にすることも無くラクチンだけど、実際どういう稼動状況になるのか見えないと微妙だなーって思ってたら、

  • passenger-memory-stats
    Passengerが現在使用してるメモリの状況が確認できる。


といったコマンドラインツールが付属してる。
passenger-statusを利用すると

----------- General information -----------
max      = 6
count    = 4
active   = 0
inactive = 4
Waiting on global queue: 0

----------- Domains -----------
/home/rails_app/current: 
  PID: 8610    Sessions: 0    Processed: 2       Uptime: 2m 23s
  PID: 8616    Sessions: 0    Processed: 1       Uptime: 2m 23s
  PID: 8614    Sessions: 0    Processed: 1       Uptime: 2m 23s
  PID: 8600    Sessions: 0    Processed: 3       Uptime: 2m 33s

といったデータが取得できる。

General informationの値の意味は、

  • max
    Passengerが起動可能なアプリケーションインスタンスの最大値。
  • count
    現在、生きてるアプリケーションインスタンス数。
  • active
    現在、リクエストを処理しているアプリケーションインスタンス数。
  • inactive
    現在、アイドル状態にあるアプリケーションインスタンス数。しばらくすると停止する。(停止までの時間は、ApacheのVirtualHost内で行う設定値の1つであるPassengerPoolIdleTimeで指定可能。)


Domainsはアプリケーションインスタンスの各情報で、それぞれの意味は、

  • Sessions
    現在、このアプリケーションインスタンスの処理を待っているHTTPクライアントのキューの数。
  • Processed
    このアプリケーションインスタンスが今まで処理してきたリクエスト数。
  • Uptime
    このアプリケーションインスタンスが稼動している時間。


といった内容。


他にも、↓のように稼動状況を視覚化して監視する方法もあるみたい。

Blogger Alliance | 404 Not Found