У нас возникла проблема на сервере 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
ОЗУ свободна, и действительно кажется, что порождается больше процессов php.
/ server-status показывает множество потоков в состоянии «W», а также некоторые процессы FastCGI в состоянии «Выход (ошибка связи)».
Я перестроил mod_fcgid из исходников, так как упакованная версия была довольно старой. Он использует текущую стабильную версию (2.3.6) mod_fcgid.
Конфигурация 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
Настройка DefaultMinClassProcessCount 0
чтобы посмотреть, поможет ли это.