LINUX.ORG.RU
ФорумAdmin

apache: «виснут» процессы


0

0

Привет, народ.

На одном из web-серверов с завидной регулярностью (раз в сутки) последние пару недель возникает такая ситуация: все доступные процессы httpd по очереди переходят в бесконечное состояние "Sending Reply", ничего при этом не отдавая и вообще никак себя не проявляя.

Таким образом, довольно быстро получается denial of service, поскольку лимит процессов исчерпывается, а существующие ничего не делают, но и не умирают.

IP-адреса запросов разные, загрузка каналов в норме, никаких зависимостей найти пока не смог. Лечится (моментально) рестартом httpd.

Что бы это могло быть?

Apache/2.0.63 (CentOS)

★★★★★
Ответ на: комментарий от AleX

>случайно не оно

В моем 2.0.63 это исправлено.

fagot ★★★★★
() автор топика

Если бы это был httpd-perl, я бы сказал, что подвисает криво написанное приложение (вот у нас на работе ровно так и было недавно).

А так -- не знаю.

lodin ★★★★
()
Ответ на: комментарий от lodin

>я бы сказал, что подвисает криво написанное приложение

К сожалению, у меня не приходит на ум ничего такого. Судя по запросам, на которых виснут процессы, это обращения к совершенно разным данным - статические файлы, форум, сайт.

Общего у них разве что php + mysql, но ни их версии, ни скрипты кажись не менялись непосредственно перед началом проблем.

fagot ★★★★★
() автор топика

Внезапно!

Мигрируй уже на lighttpd или nginx, а похапе пускай через fastcgi. Такой расклад не в пример надёжнее mod_php, ибо интерпретатор и http-сервер разнесены по разным процессам. Ну а подвисшие процессы php можно легко убивать по таймауту, с занесением в лог.

anonymous
()
Ответ на: Внезапно! от anonymous

Спасибо конечно за предложение, но я хочу понять в чем проблема, а не пытаться убежать от нее.

Если бы я хотел что-то убивать вручную, то не спрашивал бы тут как это сделать :)

fagot ★★★★★
() автор топика
Ответ на: комментарий от fagot

В апаче твоя проблема, лол. Если я начну перечислять все глюки, которые огрёб с mod_php и mod_python, ты слушать устанешь.

Да, надеюсь, ты mpm_prefork используешь? Когда дело доходит до тредов, всё становится совсем плохо.

anonymous
()
Ответ на: комментарий от anonymous

Моя проблема в том, что я не могу понять причину сбоев, а не в apache.

И да, мы используем prefork.

fagot ★★★★★
() автор топика
Ответ на: комментарий от fagot

>>Моя проблема в том, что я не могу понять причину сбоев, а не в apache.

Попробуйте strace -p PID на "зависшем" чайлде, хотя-бы поймёте на каком системном вызове оно виснет.

anonymous
()
Ответ на: комментарий от anonymous

>Попробуйте strace -p PID на "зависшем" чайлде

Это было почти первое, что сделали.

Никакой полезной (для нас) информации не получили - на чем виснет не выяснили, поскольку отловить этот момент не получилось и заставить "зависнуть" возможности нет. А позже процесс уже никакой активности не проявляет вообще.

fagot ★★★★★
() автор топика
Ответ на: комментарий от fagot

Ну последний сделанный вызов-то должен быть виден. Я несколько раз встречался с похожими проблемпми. Один раз оказалось, что PHP пытался делать exclusive filelock на NFS. Второй -- poll таймаутился т.к. на удалённой системе не было дырки в файрволе, а с неё шёл инклюд. В третий -- луп с таймаутящимся select-ом, т.к. приложение не снимало лок с файла.

В server-status все чайлды в "W", независимо от запроса?

anonymous
()
Ответ на: комментарий от anonymous

>В server-status все чайлды в "W", независимо от запроса?

Так точно.

fagot ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.