哪位阿帕奇工人与乘客一起使用以及如何使用?

时间:2009-07-06 22:10:52

标签: ruby-on-rails passenger apache-config slicehost

我在apache2.conf中有这个配置

<IfModule mpm_prefork_module>
StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers          2
MaxClients          15
MinSpareThreads      4
MaxSpareThreads      5
ThreadsPerChild      15
MaxRequestsPerChild   50000
</IfModule>

现在我在这里感到困惑。

  • 哪个模块在哪些条件下加载?
  • 这些人建议使用工人模块。由于两者都存在于apache conf文件中,我是否必须对mpm_prefork_module进行注释或保持原样?

以下是apache的乘客配置文件:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4
PassengerRuby /usr/bin/ruby1.8
PassengerMaxPoolSize 3
PassengerPoolIdleTime 999999
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0
  • 我在slicehost上运行256MB切片上的一个Rails 2.3.2应用程序。我对表现还不太满意。上面的设置是否有用??

3 个答案:

答案 0 :(得分:2)

一个。运行httpd / apache / httpd2 / apache2 -l来查看加载了哪个mpm(虽然通常是prefork)
湾为了得到你必须安装的工人模块,我以前从未做过,但我知道它是一个或两个命题,它们不能共存 C。如果您预计任何类型的流量,请确保将MaxClients(在prefork配置中)设置为大约20(开始),否则您的应用/乘客将在高流量时段中废弃 d。对于乘客设置,我会从

开始

PassengerMaxPoolSize 2
PassengerPoolIdleTime 0
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

这样做是将Framework spawner,App spawner和App实例在内存中保留最长时间,因此在一段时间不活动后(如果您的站点不高),它不必重新生成应用程序实例或框架交通)。 这就像运行一个永远在线的杂种类型设置一样接近。

答案 1 :(得分:1)

Apache是​​否使用prefork MPM或worker MPM是编译时选项。在运行时无法更改它,因此您无法加载MPM。

该指令意味着“如果当前MPM是xxx,则使用此块内的配置,否则完全忽略该块”。

因此,如果您想使用worker MPM,则必须卸载prefork版本并安装worker版本。

答案 2 :(得分:0)

一般来说,人们问他们的VPS何时开始打交换,那是你的情况吗?这个线程非常有用,使用“free”和“top”并切换到MPM worker

http://forum.slicehost.com/comments.php?DiscussionID=3313

这些是有关未被讨论的设置的信息

http://wiki.ninjafocus.net/Ruby_on_Rails

http://programming-gone-awry.blogspot.com/2009/06/how-to-save-much-ram-when-running-rails.html