2

我的 apache2.conf 中有这个配置

<IfModule mpm_prefork_module>
StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0
</IfModule>
# 工人 MPM
# StartServers:要启动的服务器进程的初始数量
# MaxClients:最大同时客户端连接数
# MinSpareThreads:保持空闲的最小工作线程数
# MaxSpareThreads:保持空闲的最大工作线程数
# ThreadsPerChild:每个服务器进程中的工作线程数恒定
# MaxRequestsPerChild:服务器进程服务的最大请求数
<IfModule mpm_worker_module>
StartServers          2
MaxClients          15
MinSpareThreads      4
MaxSpareThreads      5
ThreadsPerChild      15
MaxRequestsPerChild   50000
</IfModule>

现在我在这里很困惑。

  • 哪个模块在什么条件下被加载?
  • phusion 家伙建议使用 worker 模块。由于两者都存在于 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 应用程序。我对性能还不是很满意。上面的设置好不好??
4

3 回答 3

2

一个。运行 httpd/apache/httpd2/apache2 -l 以查看加载了哪个 mpm(尽管通常是 prefork)
b。要获得工作模块,您必须安装它,虽然我以前从未做过,但我知道这是一个非此即彼的命题,它们不能共存
c. 如果您预计任何类型的流量,请确保将 MaxClients(在 prefork 配置中)设置为大约 20(开始),否则您的应用程序/乘客将在高流量期间崩溃
。对于乘客设置,我会从

乘客最大池大小 2
乘客池空闲时间 0
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

这样做的目的是将 Framework spawner、App spawner 和 App 实例尽可能长时间地保存在内存中,因此它不必在一段时间不活动后重新生成应用程序实例或框架(如果您的网站流量不高)。这与您将获得的运行始终在线的杂种类型设置一样接近。

于 2009-08-20T21:59:23.077 回答
1

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

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

所以如果你想使用worker MPM那么你必须卸载prefork版本并安装worker版本。

于 2009-08-27T23:44:30.190 回答
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

于 2009-07-07T15:31:16.673 回答