Назад | Перейти на главную страницу

Apache2: сервер достиг настройки MaxClients, рассмотрите возможность увеличения настройки MaxClients

У меня возникают проблемы с выделенным Ubuntu 12.04 LTS (Apache / 2.2.22), PHP 5.3 с APC.

Каждые несколько часов я вижу это:

[Fri Aug 17 15:36:51 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting

Это заставляет сервер сбрасывать / отклонять все соединения.

Когда я перехожу к перезапуску apache:

[Fri Aug 17 15:38:14 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:14 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:16 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:16 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:18 2012] [warn] child process 8946 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:18 2012] [warn] child process 7496 still did not exit, sending a SIGTERM
[Fri Aug 17 15:38:20 2012] [error] child process 8946 still did not exit, sending a SIGKILL
[Fri Aug 17 15:38:20 2012] [error] child process 7496 still did not exit, sending a SIGKILL
[Fri Aug 17 15:38:21 2012] [notice] caught SIGTERM, shutting down
[Fri Aug 17 15:38:21 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Fri Aug 17 15:38:22 2012] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.2 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/1.0.1 configured -- resuming normal operations

С тех пор, как это начало происходить, я увеличил конфигурацию для apache (это 6-ядерная машина с 16 ГБ оперативной памяти, поэтому я решил, что мне нужно ее много).

<IfModule mpm_prefork_module>
    StartServers          8
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit         500
    MaxClients          500
    MaxRequestsPerChild 1000
</IfModule>

Сервер не обслуживает ничего, кроме PHP (никаких статических файлов), а загрузка страницы никогда не превышает нескольких секунд ...

Смотрю mod_status (только что активировал), но ничего странного не вижу ...

Server uptime: 20 minutes 46 seconds
Total accesses: 9206 - Total Traffic: 641 kB
CPU Usage: u147.52 s17.21 cu0 cs0 - 13.2% CPU load
7.39 requests/sec - 526 B/second - 71 B/request
2 requests currently being processed, 8 idle workers

___...W__..._W.....__...........................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
....................................................

Я даже попытался запустить несколько стресс-тестов с apache ab, чтобы посмотреть, смогу ли я воспроизвести его ... не повезло. :(

РЕДАКТИРОВАТЬ: Я только что сделал большую находку:

DEBUG: WARNING - require(): GC cache entry '/var/www/common/revisions/1061/library/core/bootstrap.php' (dev=64513 ino=1577080) was on gc-list for 3601 seconds /var/www/common/revisions/1061/library/core/cache/disk/dao.php (16)

Эта ошибка является причиной проблемы, я считаю, что она связана с APC.

Похоже, проблема заключалась в том, что APC не хватало памяти или что-то в этом роде (для хранения файлов в коде операции), что приводило к отключению apache. Когда я увеличил лимит памяти до 256 МБ (apc.shm_size=256M) проблема ушла.

Перенесите Apache за обратным прокси (например, nginx, ...). Перед компиляцией apache из исходного кода вам потребуется «жесткий код» в исходный код apache для увеличения лимита с 256 до примерно 2048