FcgidMaxProcesses 不受尊重

FcgidMaxProcesses 不受尊重

我正在使用 FastCGI (fcgi)。我遇到一个问题,生成的 PHP 进程比应有的要多,这会耗尽我的 RAM。

我正在使用 WHM,因此通过 WHM Web 界面 > Apache 配置 > 包含编辑器 > Pre VirtualHost Include 设置了以下 PHP 设置:

<IfModule mod_fcgid.c>
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500
    FcgidMaxRequestsPerProcess 500

    FcgidMaxProcesses 15
    FcgidMinProcessesPerClass 0
    FcgidMaxProcessesPerClass 8

    FcgidIdleTimeout 30
    FcgidIdleScanInterval 15
    FcgidProcessLifeTime 60
    FcgidIOTimeout 300

    FcgidMaxRequestLen 268435456
</IfModule>

(通常这些设置会进入/usr/local/apache/conf/php.conf,但是在更改各种设置时此文件会被 WHM 覆盖,所以我不得不将它们插入其他地方。上述方法是在 cPanel 论坛中推荐的,它会导致设置包含在 Apache 配置中。)

然而,尽管如此FcgidMaxProcesses 15,我发现top在高峰使用期间,最多有 45 个 PHP 进程同时运行(甚至更多)。例如,这是上周末拍摄的屏幕截图:

顶部输出的屏幕截图http://f.cl.ly/items/1H2M452J1K2p0Z231H2y/Screen%20Shot%202013-01-19%20at%207.16.44%20AM-2.png

我真的希望将其限制为最多 15 个进程。(尽管看起来我有多余的 RAM,但实际上 2GB + 1GB 是突发的。一般来说,我需要将其保持在 2GB 以下。)

它是一个 Apache 服务器,运行 CentOS 6、Apache 2(Worker MPM)、PHP 5.3.20(FastCGI/fcgi)和 MySQL 5.5.28。2 GB RAM(3 GB 可扩展)、24 个 CPU。

答案1

我相信以下可能是在 cPanel 中解决此问题的正确方法: http://www.ray.45press.com/configure-mpm-apache-xcache-fcgid-in-cpanel/

具体来说,它与编辑有关,/usr/local/cpanel/cgi-sys/php5包括以下几行:

export PHP_FCGI_CHILDREN=1
export PHP_FCGI_MAX_REQUESTS=10000

但请确保与 Apache 配置PHP_FCGI_MAX_REQUESTS相匹配。FcgidMaxRequestsPerProcess

此外,您还需要注意文件中将其复制到适当位置(/var/cpanel/conf/apache/wrappers/php5)的注释,以便在 apache 或 php 更新时保留它。

相关内容