何が起こっているかは、タイムアウトのためにアプリケーションおよび/またはApplicationSpawnerがシャットダウンしていることです。新しいリクエストを処理するために、Passengerはアプリケーションの新しいコピーを起動する必要があります。高速なマシンであっても数秒かかることがあります。この問題を解決するには、アプリケーションを有効に保つために使用できるApache設定オプションがいくつかあります。
具体的には、自分のサーバーで行ったことです。 PassengerSpawnMethodとPassengerMaxPreloaderIdleTimeは、自分の状況で最も重要な構成オプションです。 「スマート」産卵モードを使用してPassengerMaxPreloaderIdleTimeをオフにすることで
# Speeds up spawn time tremendously -- if your app is compatible.
# RMagick seems to be incompatible with smart spawning
# Older versions of Passenger called this RailsSpawnMethod
PassengerSpawnMethod smart
# Keep the application instances alive longer. Default is 300 (seconds)
PassengerPoolIdleTime 1000
# Keep the spawners alive, which speeds up spawning a new Application
# listener after a period of inactivity at the expense of memory.
# Older versions of Passenger called this RailsAppSpawnerIdleTime
PassengerMaxPreloaderIdleTime 0
# Just in case you're leaking memory, restart a listener
# after processing 5000 requests
PassengerMaxRequests 5000
、乗客は(Apacheの起動後の最初のリクエストの後に)常時メモリ内のアプリケーションの1つのコピーを保持します。個々のApplication
リスナーはこのコピーからfork
になります。これは超安価な操作です。アプリケーションが非常に迅速にリスナーを生成しなければならないかどうかはわかりません。
あなたのアプリがスマートなスポーンと互換性がない場合は、大きなPassengerPoolIdleTimeを維持し、定期的にcurlとcronjobまたはmonitなどを使用してリスナーが生き続けるようにすることをおすすめします。
Passenger User Guideは、これらの設定オプションとその他の設定オプションの素晴らしいリファレンスです。
編集: あなたのアプリは、スマート産卵と互換性がない場合、あなたはPassengerPreStartとPassengerMinInstancesを組み合わせた場合、
# Automatically hit your site when apache starts, so that you don't have to wait
# for the first request for passenger to "spin up" your application. This even
# helps when you have smart spawning enabled.
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
# the minimum number of application instances that must be kept around whenever
# the application is first accessed or after passenger cleans up idle instances
# With this option, 3 application instances will ALWAYS be available after the
# first request, even after passenger cleans up idle ones
PassengerMinInstances 3
だから、非常にいいです、いくつかの新しいオプションがあり、旅客は3をスピンアップしますインスタンスがApacheの読み込み直後に実行され、少なくとも3つのインスタンスが常に保持されるため、ユーザーには遅延はほとんど見られません。
スマートスポーン(推奨)をPassengerMaxPreloaderIdleTime 0
で既に使用している場合は、PassengerPreStart
を追加すると、すぐに起動するという追加の利点が得られます。
ヒーローに感謝します。phusion.nl!
このナゲットは、Passenger Doc Siteでも見つかりました:http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPreStart – dewrich
@dewrichツールを見つけました(http://wekkars.com )それはあなたのcronjobがやっていることを正確に行います – SteenhouwerD