我在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的乘客配置文件:
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
答案 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