Passengerの設定オプション

作成日 2009/05/24

Apache上でRedmaine等Ruby on Railsアプリケーションを実行するためのソフトウェアであるPassenger 2.2.xの主要な設定項目を抜粋して掲載します。

すべての項目のドキュメントは、オフィシャルサイト上の Phusion Passenger users guide をご覧くだい。

基本設定

↓ コンテキスト:サーバー設定ファイル

名称 説明
PassengerRoot <ディレクトリ> Passenger のインストールディレクトリです。Passeenger のビルド中に指示された設定値をそのまま使用してください。
PassengerLogLevel <値> 出力するログの内容を設定します。ログは Apache の error ログ(CentOS の場合は /var/log/httpd/error_log)に出力されます。

0:エラーと警告のみ
1:上記に加えて重要なデバッグ情報を力します。Passenger の運用上問題が発生した場合に有用です。
2:詳細なデバッグ情報を出力します。
3:全てのデバッグ情報を出力します。

デフォルト:0
PassengerRuby <ファイル名> Ruby on Rails を実行する時に使用する Ruby インタプリタです Passeenger のビルド中に指示された設定値をそのまま使用してください。
PassengerUseGlobalQueue <on¦off>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
グローバルキューの有効・無効の設定を行います。Passenger が受け取ったリクエストはキューに格納され順次処理されますが、デフォルトではアプリケーションのインスタンスごとにキューが用意されます。たまたま処理時間が異常に長いリクエストを処理しているインタンスがあった場合、そのキューの後続のリクエストは他のインスタンスが空いた状態になってもずっと待たされます。
グローバルキューが有効の場合は複数インスタンスが単一のキューを共有するためそのような状態は発生しません。
銀行の ATM での行列にたとえると、ATM1台ごとに一つの行列を作るのがグローバルキューイングを使わない状態、行列は一つで先頭の人から順に空いた ATM を利用する、いわゆるフォーク並びがグローバルキューです。

デフォルト:off
PassengerUserSwitching <on¦off> RAILS_ROOT/config/environment.rb のオーナーユーザーで Ruby on Rails を実行する機能 の on/off を設定します。
ただし、enironment.rb のオーナーが root で ある場合は、PassengerDefaultUser で設定されているユーザで(デフォルト:nobody)で実行されます。

デフォルト: on
PassengerDefaultUser <ユーザー名> PassengerUserSwitching が off の場合、また はon であるがenvironment.rb のユーザーが root であった場合に、オプションで設定されたユーザでRuby on Railsが実行されます。

デフォルト: nobody
PassengerEnabled <on¦off>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
特定の URL、ディレクトリ、バーチャルホストで Passenger を無効にすることができます。

デフォルト: off
PassengerAppRoot <path/to/root>
PassengerSpawnMethod
PassengerTempDir
PassengerUploadBufferDir
PassengerRestartDir
PassengerUser
PassengerGroup
PassengerDefaultGroup
PassengerFriendlyErrorPages <on¦off>

リソース管理・最適化

↓ コンテキスト:サーバー設定ファイル

名称 説明
PassengerMaxPoolSize <値> Ruby on Rails のプロセスの最大起動数です。多ければ多いほど大量のリクエストを並行して処理できますが、より多くのメモリ必要となります。
Passenger のドキュメントにおける推奨値は、 メモリ 256MB の環境でで MySQL 等同時に実行する場合は 2、メモリ 2GB の環境では 30 です。

デフォルト: 6
PassengerMaxInstancesPerApp <値> ある特定の Ruby on Rails アプリケーション のプロセスの最大起動数です。
一台のサーバで複数のアプリケーションを実行している時に、特定のアプリケーションだけが大量に起動してしまい PassengerMaxPoolSize の値に達してしまうのを防ぎます。
一台のサーバで単一のRailsアプリケーションのみを実行している場合は意識する必要はありません。

デフォルト:0(制限なし)
PassengerPoolIdleTime <値> このオプションで設定した時間(秒)Ruby on Rails アプリケーションにアクセスがないときにアプリケーションを終了させます。

デフォルト:300[秒]
利用者の平均滞在時間の 2 倍の値が推奨。
PassengerMaxRequests <値>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
ある特定の Ruby on Rails アプリケーションが処理するリクエストの最大数です。リクエストの処理数がこの値に達するごとにアプリケーションは再起動されます。
アプリケーションでメモリリークが発生して いる場合などに有効です。

デフォルト:0
PassengerStatThrottleRate <値>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
Rails の自動検出や再起動指示の検出のためにファイルシステムを確認する間隔を秒単位で指定します。

デフォルト:0(リクエストごとに確認
PassengerHighPerformance <on¦off>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
Apache の各種モジュールとの互換性を犠牲にして Passenger の動作を高速化します。
on にすると mod_rewrite、mod_autoindex など いくつかのモジュールが正常に動作しなくなります。

デフォルト: on
PassengerPreStart
PassengerResolveSymlinksInDocumentRoot <on¦off>
PassengerAllowEncodedSlashes <on¦off>
PassengerLogLevel
PassengerDebugLogFile

Ruby on Rails固有

コンテキスト:グローバル、バーチャルホスト

名称 説明
RailsAutoDetect <on¦off> DocmentRoot が Ruby on Rails アプリケーショ ンか(RAILS_ROOT/public であるか)、自動判別するかどうかを設定します。
off にする場合は RailsBaseURI オプションで明示的に Ruby on Rails アプリケーションであることを指示します。

デフォルト:on
RailsBaseURI

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
特定の URI が Ruby on Rails アプリケーションであることを指定します。
RailsAutoDetect が off の場合や、サブディレクトリでRuby on Rails アプリケーションを 実行する場合に使用します。
RailsAllowModRewrite <on¦off> on の場合、Passenger による mod_rewrite ルールの上書きを行いません。
Passenger はパフォーマンス確保のために、 Ruby on Rails の 標 準 の RAILS_ROOT/public/.htaccess に記述された mod_rewrite ルールを無効化しています。on にするとこの処理を行いません。

デフォルト: off
RailsEnv <値>

コンテキスト
・サーバ設定ファイル
・バーチャルホスト
<Directory>,<Location>ブロック
Ruby on Rails の動作モードを決定する RAILS_ENV 環境変数の値を設定します。
production、development、test のいずれかを指定します。


デフォルト: production
RailsSpawnMethod <値> Ruby on Rails のプロセスを生成する方法を指定します。起動速度、メモリ消費量、Webrick や Mongrel との互換性が異なる三つの起動方法があります。
WebrickやMongrelで動作するアプリケーションが Passenger で動作しない場合に限り conservative に設定します。


デフォルト: smart-lv2
RailsFrameworkSpawnerIdleTime <値>

コンテキスト
・サーバ設定ファイル
Passenger の FrameworkSpawner のアイドルタイムアウト時間を指定します。 RailsSpawnMethod が smart の場合のみ有効です。
0 を指定すると FrameworkSpawner は web サーバが終了するまでメモリを占有し続けすが、Rails アプリケーション起動の所要時間が 約40%に短縮されます。


デフォルト: 1800[秒]
RailsAppSpawnerIdleTime <値>

コンテキスト
・サーバー設定ファイル
Passenger の ApplicationSpawner のアイドルタイムアウト時間を指定します。 RailsSpawnMethod が smart-lv2 または smart の場合のみ有効です。
0 を指定すると ApplicationSpawner は web サーバが終了するまでメモリを占有し続けます が、Rails アプリケーション起動の所要時間が 約 10%に短縮されます。


デフォルト: 1800[秒]
RackAutoDetect <on¦off>
RackBaseURI
RackEnv
RailsRuby
RailsUserSwitching
RailsDefaultUser