如何有效减少 php-cgi 进程的运行?

如何有效减少 php-cgi 进程的运行?

我的服务器是 Linode 512,上面运行着 Wordpress MU,里面有 3 个网站(访问量不大)和几个 NodeJS 应用程序。

我需要切换到 Lighttpd,因为 Apache 2 使用了大约 59% 的服务器 RAM,而现在 php-cgi 进程占用了大约 43.6% 的服务器 RAM:

  • 最常见的情况是 2 个进程各使用 16.5% 的 RAM,
  • 4 个进程每个使用 1.8% 的 RAM,并且
  • 另外 4 个进程每个使用 0.8% 的 RAM

我怎样才能减少这些进程?我几乎可以肯定,这些进程并不是该服务器所承受的流量所必需的……

我尝试只允许 2 个孩子,但我仍然有那 10 个...这是我的 lighttpd.conf 中的 fastcgi.server 部分。

fastcgi.server = ( ".php" =>
                    ( "localhost" =>
                      (
                        "socket" => "/var/run/lighttpd/php-fastcgi.socket",
                        "bin-path" => "/usr/bin/php-cgi",
                        "bin-environment" => (
                          "PHP_FCGI_CHILDREN" => "2",
                          "PHP_FCGI_MAX_REQUESTS" => "4000"
                         )
                      )
                    )
                  )

我还可以做些什么来调整 lighttpd 以使用更少的 RAM?

答案1

如果设置了 bin-path,则 lighttpd 将负责生成 fcgi 进程,限制如下:

"max-procs" => <integer>,             # optional - when omitted, default is 4

环境变量 PHP_FCGI_CHILDREN 是 php 可执行文件内部生成更多进程的附加提示,您可以将其设置为零。

您没有指定 max-procs,因此 lighty 会生成 4 个 procs,并且每个 procs 都有两个额外的子 procs——4[max-procs] * (1+2[PHP_FCGI_CHILDREN])。

答案2

查看 lighttpd文档关于 php-cgi。看来您可能需要设置指令max-procs来限制子进程的总数。

相关内容