Passenger如何決定何時分叉一個新進程,並且可以以任何有意義的方式配置它應該處理多少個進程(除了配置中的「智能」和「保守」標誌?)或者,有沒有辦法調試爲什麼在Phusion下運行的Rails應用程序會突然凍結?Phusion Passenger不總是用Rails阻塞?
背景:
我使用Phusion客運與Apache2的服務器,並且在大多數情況下,事情做得很好。我更少關心加載,更關心阻塞:如果命中一個很長的控制器方法(比如睡眠10秒鐘的方法),那麼普通的雜種會捆綁整個應用程序,並且不能提供其他網頁直到該方法已完成。通過Passenger,我可以使用同樣的方法,並且仍然打開一個新的瀏覽器,並且可以更快地加載同一個應用程序的頁面,而不會造成任何問題。
有時候。
而且「有時」是一個問題。如果一個方法需要足夠長的時間(在我的情況,這是否一去不復返外部網絡的呼叫),整個應用程序將再次掛起,即使所有的漂亮線分叉,或任何..
我的理解是, Passenger的工作方式是每次需要時都會分離出全新的軌道實例,通常是在一次連接太多人的情況下。
它似乎可以用很長的方法,雖然...但我看不到任何如何或爲什麼(或更重要的是,如何調整或配置此過程)的參考。甚至如何弄清楚問題可能是什麼(我是否需要讓Phusion脫離更多的線程,它是否在一段時間內不能使用很長的方法?)