Apache 2.2、worker mpm、mod_fcgid 和 PHP:无法申请进程槽

Apache 2.2、worker mpm、mod_fcgid 和 PHP:无法申请进程槽

我们在 Apache 服务器上遇到了一个问题,每隔 15 到 20 分钟,它就会完全停止提供 PHP 请求。有时它会返回 503 错误,有时它会恢复到足以提供页面的状态,但需要一分钟或更长时间的延迟。在此期间,静态内容仍会提供。

在日志文件中,报告了如下错误:

[Wed Sep 28 10:45:39 2011] [warn] mod_fcgid: can't apply process slot for /xxx/ajaxfolder/ajax_features.php
[Wed Sep 28 10:45:41 2011] [warn] mod_fcgid: can't apply process slot for /xxx/statics/poll/index.php
[Wed Sep 28 10:45:45 2011] [warn] mod_fcgid: can't apply process slot for /xxx/index.php
[Wed Sep 28 10:45:45 2011] [warn] mod_fcgid: can't apply process slot for /xxx/index.php

有空闲的 RAM,而且事实上似乎产生了更多的 php 进程。

/server-status 显示许多线程处于“W”状态,以及一些 FastCGI 进程处于“退出(通信错误)”状态。

我从源代码重建了 mod_fcgid,因为打包的版本太旧了。它使用的是 mod_fcgid 的当前稳定版本 (2.3.6)。

FCGI 配置:

FcgidBusyScanInterval      30
FcgidBusyTimeout           60

FcgidIdleScanInterval      30
FcgidIdleTimeout           45

FcgidIOTimeout             60
FcgidConnectTimeout        20

FcgidMaxProcesses          100
FcgidMaxRequestsPerProcess 500

FcgidOutputBufferSize      1048576

系统信息:

Linux xxx.com 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:45:36 UTC 2009 x86_64 GNU/Linux
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Apache 信息:

Server version: Apache/2.2.11 (Ubuntu)
Server built:   Aug 16 2010 17:45:55
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT=""
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

已加载的 Apache 模块:

alias.load
auth_basic.load
authn_file.load
authz_default.load
authz_groupfile.load
authz_host.load
authz_user.load
autoindex.load
cgi.load
deflate.load
dir.load
env.load
expires.load
fcgid.load
headers.load
include.load
mime.load
negotiation.load
rewrite.load
setenvif.load
ssl.load
status.load
suexec.load

PHP信息:

PHP 5.2.6-3ubuntu4.6 with Suhosin-Patch 0.9.6.2 (cli) (built: Sep 16 2010 19:51:25)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

答案1

设置DefaultMinClassProcessCount 0以查看是否有帮助。

相关内容