Страница 1 из 1

Apache некорректная работа

Добавлено: 2008-05-26 12:51:26
bopoh_inc
Здравствуйте.
Есть установленая ОС FreeBSD 7.0 и вебсервер Apache 2.2.8 с установленой поддержкой php5. PHP работает как модуль апач. Есть скрипт написаный на php, его выполнение "на глаз" (смотрел командой top) занимает около полсекунды, пр этом процессор получает нагрузку 99. Скрипт неудачный само собой но он помог мне увидеть кое что. Я провел эксперимент: запустил через шелл top, а в другом окне открыл браузер и запустил этот скрипт. Он выполнился, после этого я начал нажимать быстро и подряд кнопку обновить в браузере. При этом наблюдалась следующая картина: количество процессов httpd возростало на глазах, значение загрузки процессора постоянно было на 99, а значения средней загрузки постоянно увеличивались. В итоге за 2-3 минуты таких щелчков по кнопке обновить, я добился такой картины:
last pid: 14914; load averages: 150.78, 109.96, 56.44 up 0+11:22:41 12:15:51
223 processes: 177 running, 46 sleeping
CPU states: 0.0% user, 0.0% nice, 100% system, 0.0% interrupt, 0.0% idle
Mem: 545M Active, 247M Inact, 158M Wired, 36M Cache, 111M Buf, 3748K Free
Swap: 2048M Total, 2048M Free
при чем это можна можна сказать последнее что я видел, так как после этого ssh перестал отвечать, сайты на сервере не открывались, но сервер пинговался. Через минут 15 он разгрёб эти процессы и всё встало на свои места.
Так вот проблема в том что это был эксперимент, а если кто-то намеренно такое сделает. Как от этого спастись?
Я пробовал ограничивать время на выполнения скрипта пхп, это не выход. так как при повышеной загружености процессора требуется больше времени на обработку скриптов и они не выполняються.
Подскажите пожалуйста как решить эту проблему?
Заранее большое спасибо за помощь.

Re: Apache некорректная работа

Добавлено: 2008-05-26 12:56:41
LMik

Re: Apache некорректная работа

Добавлено: 2008-05-26 13:51:53
bopoh_inc
спасибо за ссылку, у меня эти модули не установлены. Надеюсь что проблема кроеться как раз именно в том что их нет.
Попробую установить, посмотрю исправиться ли проблема.

Re: Apache некорректная работа

Добавлено: 2008-05-26 14:01:00
LMik
bopoh_inc писал(а):спасибо за ссылку, у меня эти модули не установлены. Надеюсь что проблема кроеться как раз именно в том что их нет.
Попробую установить, посмотрю исправиться ли проблема.
Вы по сути дела задосили свой сервер, он тупо скушал кучу памяти и процссорного времени, нужно что-то ограничивать... что решать вам.

Re: Apache некорректная работа

Добавлено: 2008-05-26 20:54:39
bopoh_inc
тоесть как я понял мне нужно ограничивать или процессорное время на выполнение скрипта или количество выделяемой памяти на его выполнение?

Re: Apache некорректная работа

Добавлено: 2008-05-26 22:39:06
bopoh_inc
Установил я модули mod_security2 и mod_dosevasive20
Как я понял мою проблему должен решать модуль mod_dosevasive20 В настройках я прописал следующее:
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 5
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>
И снова провел свой эксперимент. Честно сказать процесы создавались с меньшей скоростью, но всё равно в итоге процессор был перегружен и сервер перестал обслуживать запросы. ((
Возможно я неправильно прописал значения в настройке модуля?

Re: Apache некорректная работа

Добавлено: 2008-05-26 22:51:20
helloworld
А можно увидеть волшебный скрипт на php который уносит машину в даун ? Или киньте в личку, если супер секретно.

Re: Apache некорректная работа

Добавлено: 2008-05-27 6:17:08
LMik
Какие настройки по количеству форков апача?

Re: Apache некорректная работа

Добавлено: 2008-05-27 12:12:24
bopoh_inc
<IfModule mpm_prefork_module>
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerLimit 256
StartServers 15
MinSpareServers 15
MaxSpareServers 20
MaxClients 200
MaxRequestsPerChild 500
</IfModule>
а скрипт увидеть можна. я в архиве могу его дать, правда он зендом защищен так что многое увидеть неудастся.
Там используеться простой движок который тянет новости по RSS
http://alltems.ru/
возможно сам движок вам будет знаком

Re: Apache некорректная работа

Добавлено: 2008-05-27 12:15:47
LMik
bopoh_inc писал(а):
<IfModule mpm_prefork_module>
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerLimit 256
StartServers 15
MinSpareServers 15
MaxSpareServers 20
MaxClients 200
MaxRequestsPerChild 500
</IfModule>
Для начала MaxRequestsPerChild 0 очень рекомендуют.

Re: Apache некорректная работа

Добавлено: 2008-05-27 12:28:34
bopoh_inc
Установил MaxRequestsPerChild 0
к сожалению результат тот же. Снова создается куча процессов httpd и загруженности процессора.
Может есть возможность сделать так что бы при посылке нового запроса старый процесс удалялся, и только потом создавался новый. А то получается что апач пытается выполнить уже неактуальные процессы.

Re: Apache некорректная работа

Добавлено: 2008-05-27 12:46:05
LMik
bopoh_inc писал(а):Установил MaxRequestsPerChild 0
к сожалению результат тот же. Снова создается куча процессов httpd и загруженности процессора.
Может есть возможность сделать так что бы при посылке нового запроса старый процесс удалялся, и только потом создавался новый. А то получается что апач пытается выполнить уже неактуальные процессы.
Теперь ставь nginx на фронтэнд, апачу на бэкенд на 127.0.0.1, максимум процессов апача поставь штук 20
И никто не сможет сожрать столько памяти :D

Re: Apache некорректная работа

Добавлено: 2008-05-27 12:51:53
bopoh_inc
я с этим не очень знаком. ngnix на фронтэнд установить умею а как быть с апач на бек 127,0,0,1 и установкой максимальным количеством процессов 20? Подскажите пожалуйста

Re: Apache некорректная работа

Добавлено: 2008-05-27 13:03:01
LMik
bopoh_inc писал(а):я с этим не очень знаком. ngnix на фронтэнд установить умею а как быть с апач на бек 127,0,0,1 и установкой максимальным количеством процессов 20? Подскажите пожалуйста

Код: Выделить всё

Listen 127.0.0.1:8000

<IfModule mpm_prefork_module>
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerLimit 20
StartServers 20
MinSpareServers 20
MaxSpareServers 20
MaxClients 200
MaxRequestsPerChild 0
</IfModule>
Ну попробуй так чтоль, вобще надо конкретно на практике проверять и значения менять.

Код: Выделить всё

nginx на 127.0.0.1:8000 proxy_pass

Re: Apache некорректная работа

Добавлено: 2008-05-27 13:33:03
bopoh_inc
что-то не получается.. сайты перестали отвечать с ошибкой nginx 502 wrong gateway
Буду вечером разбираться, видать какой то момент я не учел

Re: Apache некорректная работа

Добавлено: 2008-05-27 13:42:08
LMik
bopoh_inc писал(а):что-то не получается.. сайты перестали отвечать с ошибкой nginx 502 wrong gateway
Буду вечером разбираться, видать какой то момент я не учел
nginx куда смотрит?

sockstat | grep httpd

Re: Apache некорректная работа

Добавлено: 2008-05-28 0:39:57
bopoh_inc
to LMik
установил я nginx. Вроде работает... по крайней мере не наблюдается картины как впервый раз. оказываеться apach упал после установки nginx.
Но самое интересное что апач снова упал минут через 10. вообще непонятно что происходит. В логах всё как обычно. Как только нормально установлю nginx я отпишусь здесь. И если у тебя будет время то помоги доковырять эту тему пожалуйста.

Кстати по ходу вопрос. Что произойдет если ограничить количество процессов апач до 20 например. Если реальная посещаемость будет больше то апач не сможет обслуживать все запросы или количество процессов означает для одного пользователя?

Re: Apache некорректная работа

Добавлено: 2008-05-28 0:46:12
Alex Keda
получат таймаут

Re: Apache некорректная работа

Добавлено: 2008-05-28 1:07:25
bopoh_inc
хм... тогда это не будет выходом из данной ситуации.

Re: Apache некорректная работа

Добавлено: 2008-05-28 6:36:21
LMik
bopoh_inc писал(а):хм... тогда это не будет выходом из данной ситуации.
Сначала добейся чтобы хотябы таймаут получили :) а выход уже не далеко будет.

Re: Apache некорректная работа

Добавлено: 2008-05-28 23:48:04
bopoh_inc
буду пробовать но пока что никак не могу устранить "грабли" с nginx. После его установки всё время падает апач.

Re: Apache некорректная работа

Добавлено: 2008-05-29 6:10:58
LMik
bopoh_inc писал(а):буду пробовать но пока что никак не могу устранить "грабли" с nginx. После его установки всё время падает апач.
Они не на одинаковых портах?
корку апача найди и дебагер её

Re: Apache некорректная работа

Добавлено: 2008-05-29 11:37:33
bopoh_inc
Да нет не на одинаковых. После установки nginx он работает на порту 80, а конф апача автоматически исправляется на 8080

Re: Apache некорректная работа

Добавлено: 2008-05-29 14:01:44
LMik
bopoh_inc писал(а):Да нет не на одинаковых. После установки nginx он работает на порту 80, а конф апача автоматически исправляется на 8080
Что значит автоматически исправляется? что в /var/messages при падении апача?

Re: Apache некорректная работа

Добавлено: 2008-05-30 0:07:08
bopoh_inc
я имею ввиду вот что:
изначально установлен только апач и в httpd.conf прописано listen 80и в виртуалхостах также прописано xxx.xxx.xxx.xxx:80
а после установки nginx все порты в httpd.conf изменяются на 8080. Тоесть получается listen 8080 и в виртуалхостах также прописано xxx.xxx.xxx.xxx:8080
Вот.