@zdravnik

Почему зависает apache2?

Стоит nginx/1.8.0 и httpd 2.2.15 на CentOS 6.7
mpm конфиг следующий:

ServerLimit 500
StartServers 4
MinSpareServers 4
MaxSpareServers 8
MaxClients 500
KeepAlive On
KeepAliveTimeout 5
MaxRequestsPerChild 3000
ListenBacklog 512


В sysctl.conf задействованы следующие опции:
vm.overcommit_ratio = 100
vm.overcommit_memory = 2

Но я не уверен что эти опции влияют на проблему.

После имитации высокой нагрузки либо ддоса, с помощью siege и последующей остановки нагрузки, апач частенько подвисает, strace говорит следующее:
[pid 63565] <... restart_syscall resumed> ) = 0
[pid 63565] clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f9421beeab0) = -1 ENOMEM (Cannot allocate memory)
[pid 63565] write(2, "[Thu Jan 28 12:58:31 2016] [erro"..., 96) = 96
[pid 63565] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[pid 63565] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[pid 63565] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid 63565] nanosleep({10, 0},
[pid 63565] <... nanosleep resumed> 0x7ffe6a49de20) = 0
[pid 63565] clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f9421beeab0) = -1 ENOMEM (Cannot allocate memory)
[pid 63565] write(2, "[Thu Jan 28 12:58:41 2016] [erro"..., 96) = 96
[pid 63565] rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
[pid 63565] rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
[pid 63565] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
[pid 63565] nanosleep({10, 0},


Бывает что подвисает не на долго, на 1-2 минуты например, а затем просыпается и начинает убивать своих детей и нормально работать, а иногда подвисания бывают и более долгие, например 20 минут (более ждать не мог, рестартанул железку). Но бывает и так что не зависает. Если в момент подвисания апача, попытаться рестартануть апач, то мастер процесс умрет и больше не запуститься потому что все дети остаются висеть в системе.
В общем бьюсь уже неделю, не могу понять в чем проблема.
Есть идеи?
  • Вопрос задан
  • 2691 просмотр
Пригласить эксперта
Ответы на вопрос 4
VladimirAndreev
@VladimirAndreev
php web dev
а нужен ли вообще апач?
Ответ написан
Комментировать
@zdravnik Автор вопроса
Апач нужен однозначно.
Ответ написан
Комментировать
@synapse_people
Офигенные советы..
Попробуй поставить апач 2.4. Кстати, включен ли своп в системе?
Ответ написан
@neol
MaxClients 500

Вы на что вообще надеялись, когда выставляли такое значение?
Если у вас приложение, СУБД, реверс-прокси и прочее на одном сервере, то MaxClients обычно имеет смысл ставить в 2-8 раз больше количества ядер (зависит от приложения), иначе сервер превращается в тыкву.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы