我有一个用于我的生产网站的 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>