我正在運行一個在初始化器中啓動Rufus調度器進程的應用程序。該應用程序正在使用Passenger生產,我注意到一些奇怪的行爲:Rails在生產中不斷重啓乘客
首先,爲了重新啓動服務器並確保初始化程序運行,您必須同時使用touch tmp/restart.txt
並在瀏覽器中加載應用程序。那時,初始化器會觸發。可怕的是,如果你只做了觸摸,Rufus計劃的進程就會重置,並且不會重新計劃,直到您在瀏覽器中加載應用程序。
只有這一點我可以處理。但是這會導致第二個問題:我會注意到計劃的進程沒有運行,所以我加載了一個頁面,突然間日誌文件告訴我它正在運行初始化程序,就好像我重新啓動了一樣。因此,在某些時候,Passenger會隨機重新啓動,就好像我碰到了tmp/restart.txt並清除了我的預定進程。
我對乘客和Rails的集成有一個難以置信的理解,所以我不知道這種偶爾的重新啓動是異常的還是全部架構的一部分。任何人都可以就這種情況提供任何智慧
實際上,您可以使用PassengerMinInstances(Apache)或passenger_min_instances(nginx)來保持一個進程始終運行。我認爲這是更新的Passenger版本,當傑夫的回覆首次發佈時可能還沒有發佈。儘管如此,您仍然需要Rufus調度程序鎖定文件,因爲您不知道哪個Passenger實例將被終止,只有總是至少有1個。 – alvin 2011-04-05 23:33:50