pts*_*pts 10 ruby apache ruby-on-rails apache2 passenger
我正在建立一个使用Phusion Passenger运行多个Ruby on Rails Web应用程序的Apache2 Web服务器.我知道Passenger会生成处理请求的Ruby进程.我有以下问题:
小智 12
一般来说,Passenger通过分支ApplicationSpawner来生成新进程,ApplicationSpawner具有预先加载到内存中的框架和应用程序代码,或者FrameworkSpawner,它只具有框架代码.
据我所知,乘客不会处理线程.相反,随着应用程序上的负载增加,它将分叉该Application的ApplicationSpawner并初始化另一个实例.当负载减少时,一个或多个应用程序实例将被终止.
如果Passenger以某种方式配置(我相信通过选择"智能"spawn方法),它将创建一个FrameworkSpawner,它加载rails代码,但没有应用程序代码,然后可以使用该版本分叉加载和应用程序Rails.
那么回答你的问题:
它将按顺序为它们提供服务,如果它确定负载足够高,则会生成其他进程.
不可以.一个进程只能属于一个Rails应用程序.
我对这个很粗略,但你的实验很有意义.乘客应该足够聪明,即使它从服务器配置中的不同位置运行,你也在谈论相同的应用程序.它可能基于应用程序的文件系统路径.
编辑:我去读了一下这个.事实证明我大部分是正确的,但技术细节有点偏.请参阅Passenger文档
是的,伯克是对的.在第三个问题的情况下,Phusion Passenger通过其应用程序根路径识别应用程序.因此,即使您有两个虚拟主机,如果它们都指向同一个DocumentRoot,那么Phusion Passenger会认为它们是相同的应用程序.