Пожалуйста, помогите с некоторыми идеями об этом сбое сервера Apache:
Вот моя конфигурация MPM и ошибки
<IfModule prefork.c>
StartServers 5
MinSpareServers 30
MaxSpareServers 40
ServerLimit 950
MaxClients 950
MaxRequestsPerChild 2000
</IfModule>
[Sun Sep 09 03:08:03 2012] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.16 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
[Mon Sep 10 17:26:47 2012] [error] [mod_pagespeed 0.10.22.4-1633 @5088] [0910/172647:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:48 2012] [error] [mod_pagespeed 0.10.22.4-1633 @4983] [0910/172648:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:48 2012] [error] [mod_pagespeed 0.10.22.4-1633 @4915] [0910/172648:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:49 2012] [alert] (11)Resource temporarily unavailable: setuid: unable to change to uid: 48
[Mon Sep 10 17:26:49 2012] [error] [mod_pagespeed 0.10.22.4-1633 @5095] [0910/172649:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:49 2012] [error] [mod_pagespeed 0.10.22.4-1633 @5085] [0910/172649:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:49 2012] [error] [mod_pagespeed 0.10.22.4-1633 @4989] [0910/172649:ERROR:worker.cc(120)] Unable to start worker thread
[Mon Sep 10 17:26:50 2012] [alert] Child 5108 returned a Fatal error... Apache is exiting!
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't release the accept mutex
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't release the accept mutex
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't grab the accept mutex
[Mon Sep 10 17:26:50 2012] [emerg] (22)Invalid argument: couldn't release the accept mutex
Наиболее актуальная ошибка выглядит так:
[Mon Sep 10 17:26:49 2012] [alert] (11)Resource temporarily unavailable: setuid: unable to change to uid: 48
Дела просто идут под откос.
Это означает, что Apache достиг предела максимального количества процессов, разрешенных для запуска.
Вы можете просмотреть лимит, запустив ulimit -u
. Чтобы увеличить лимит, запустите ulimit -u <number>
или редактировать /etc/security/limits.conf
(возможно, специально для Red Hat) и добавьте директиву конфигурации для пользователя Apache, чтобы увеличить значение для nproc
к чему-то более разумному.
Вы также можете попробовать уменьшить Apache ServerLimit
и MaxClients
директивы.
Вот хорошая статья, объясняющая, как RHEL6 ввел проблему с максимальным количеством процессов («help ulimit» показывает -u - «максимальное количество пользовательских процессов»), добавив ограничение в 1024 в /etc/security/limits.d/90-nproc.conf , который, по словам автора, он только что прокомментировал: http://kavassalis.com/2011/03/linux-and-the-maximum-number-of-processes-threads/
Вот страница Red Hat Bugzilla, на которой это обсуждается: https://bugzilla.redhat.com/show_bug.cgi?id=432903