PassengerMaxRequestsとPassengerPoolIdleTimeの関係について
PassengerMaxRequestsとPassengerPoolIdleTimeに関する個人的なメモ。
とりあえず、今自分が使用している設定はこちら。お決まりの3行はここでは省略する。
PassengerUseGlobalQueue on PassengerMaxPoolSize 30 PassengerMaxInstancesPerApp 0 PassengerMaxRequests 0 PassengerPoolIdleTime 120 RailsAutoDetect off RailsFrameworkSpawnerIdleTime 86400 RailsAppSpawnerIdleTime 86400
ここから本題。
PassengerMaxRequestsとは、リクエストをいくつ処理したらプロセスを終了させるかを決めるものだ。
ちなみに初期値は0=無制限となっている。
- 例1(ちょっと極端な例)
PassengerMaxRequests 5 PassengerPoolIdleTime 120
この場合、Passengerの各インスタンスはリクエストを5個処理したらプロセスを終了する。
つまり、PassengerPoolIdleTimeは事実上、無視される。
(120秒間に5回のアクセスもないというなら別だが)
- 例2(PassengerMaxRequestsは無制限)
PassengerMaxRequests 0 PassengerPoolIdleTime 120
この場合は、PassengerPoolIdleTimeのみが適用される。
PassengerMaxRequestsを設定しない場合は、0を指定した場合と同様に扱われるので、上記の例は以下と同じだ。
PassengerPoolIdleTime 120
通常は、例2を使うほうが良いと思う。
でも、サーバのスペックが低いとか、メモリが少ないから普段はプロセスを節約したいなどの状況次第では、後者の設定もありだと思う。
Passengerの各インスタンスの終了するタイミングが分かりやすいという事もあるし。