php5-fcgid.conf 配置后,服务器每 10 分钟停止响应一次,为什么?

php5-fcgid.conf 配置后,服务器每 10 分钟停止响应一次,为什么?

我安装了 PHP5-CGI、Apache 和 MYSQL。在添加这些设置之前,PHP5-CGI 会无休止地拥有超过 15 个进程,每个进程都会占用 5 MB 的内存。因此,我将这些设置添加到 /etc/apache2/conf.d/php5-fcgid.conf,PHP5-cgi 进程受到限制。但是,现在,每次我在 4 或 5 分钟内打开 20 个线程/页面时,服务器就会停止正常运行,一切都会冻结,页面停止加载,直到 2 或 3 分钟过去后,它又会像闪电一样快速运行。

  AddHandler fcgid-script .fcgi .php                                        
  # Where to look for the php.ini file?                                     
  DefaultInitEnv PHPRC  "/etc/php5/cgi"                                     
  # Where is the PHP executable                                             
  FCGIWrapper /usr/bin/php-cgi .php                                         
  # Maximum requests a process handles before it is terminated              
  MaxRequestsPerProcess 1500                                                
  # Maximum number of PHP processes.                                        
  MaxProcessCount       15                                                  
  # Number of seconds of idle time before a process is terminated           
  IPCCommTimeout        240                                                 
  IdleTimeout           240                                                 


# Large site                                                                

  ServerLimit          2048                                                 
  ThreadLimit           100                                                 
  StartServers           10                                                 
  MinSpareThreads        30                                                 
  MaxSpareThreads       100                                                 
  ThreadsPerChild        64                                                 
  MaxClients           2048                                                 
  MaxRequestsPerChild  5000  

我正在运营一个网站(smf 论坛),平均每 20 分钟有大约 450 名用户访问,因此有点忙乱。那么,发生了什么事?

答案1

我马上看到的第一件事是,你的代码FCGIWrapper看起来像是实际的php-cgi可执行文件,而不是一个包装脚本,它配置了 PHP 期望的环境变量,其值将与 一起使用fcgid。默认情况下,PHP 在 500 个请求后退出,但你让 fcgid 期望它们持续 1500 个。你可以在以下位置找到示例和解释Apache 的文档但基本上您需要将PHP_FCGI_MAX_REQUESTS环境变量设置为php-cgi大于MaxRequestsPerProcessfcgid 正在使用的设置。

你可以跳过包装脚本,直接DefaultInitEnv PHP_FCGI_MAX_REQUESTS 1501在 Apache 配置中使用

此外,您的配置很旧,所有指令名称已改变但旧的还可以用目前

相关内容