我使用 apache2 和 mod_fastcgi 在私有共享服务器上运行 PHP。我将其与 suexec 结合使用,这样我就可以以自己的 UNIX 用户身份运行每个虚拟主机,让 Wordpress 所有者感到满意。
一个网站偶尔会因为 Twitter 上的抓取工具而产生大量流量,这会生成 10 多个 php-cgi 进程,每个进程占用 50MB。这会在我的一台 512MB 从属服务器上生成大量 OOM 错误。
我很想将每个用户限制为 4 个 PHP 进程,同时将全局最大进程数限制为 8 个。在加载的配置文件中mod_fastcgi.so
,我定义了以下内容
FastCgiConfig -maxClassProcesses 4 -maxProcesses 8
在每个虚拟主机的 cgi-bin/php.fcgi 文件中,我还设置了以下内容:
#!/bin/bash
### Set PATH ###
PHP_CGI=/usr/bin/php-cgi
PHP_FCGI_CHILDREN=0
PHP_FCGI_MAX_REQUESTS=1000
### no editing below ###
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI
不幸的是,这对我的环境没有多大帮助,当对服务器进行负载测试时,我仍然发现一个用户运行了超过 4 个 php-cgi 进程,导致更多 OOM 问题。我在这里做错了什么?