许多 Apache 实例都是通过 Passenger/Rails 生成的

许多 Apache 实例都是通过 Passenger/Rails 生成的

我有一个用于我的生产网站的 Debian Linux VPS 服务器(512MB)。

我正在使用 Phusion Passenger 和 Apache 为我的 Rails 2.3.4 应用程序和 Ruby 1.9 提供服务。我将 Phusion Passenger 实例池限制为 3 个

尽管流量相对较低,但服务器有时会崩溃,并且我注意到(使用“top”命令时)有许多 apache 实例(/usr/sbin/apache2 -k start),其中可能有 20 个占用了我所有的内存,并且网站变得没有响应。

我不知道该怎么办,从哪里开始挖掘潜在问题,或者如何发现或限制 apache 实例的数量。

谢谢,

答案1

这将是你的多层印刷机设置。您在 *nix 机器上,因此可能预分叉您可以通过运行 httpd -l(或者在 ubuntu 上奇怪的是运行 apache2 -l)来查看已编译的模块来验证这一点。

您将需要转到 httpd.conf(或 apache2.conf,具体取决于您的设置)并编辑适合您的 MPM 工作者的相应配置,以适合您的环境。

编辑:

您正在运行如图所示的 prefork mpm,但被prefork.c列为已编译。您需要进入 /etc/apache2/apache2.conf(我只有 Ubuntu 框需要检查,但由于它是 Debian 衍生产品,所以应该是相同的)。

您将看到如下所示的部分。编辑这些值。

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

相关内容