The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"apache mod_php повисают скрипты"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Др. сетевые сервисы / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"apache mod_php повисают скрипты"  +/
Сообщение от Frei email(ok) on 11-Мрт-11, 19:40 
Здравствуйте.

При запуске скрипта через cron каждую минуту следующим образом: wget "http://site.ru/index.php?param=param1"

Экземпляры apache (httpd), которые обрабатывают этот запрос начинают повисать. Точнее не прекращают свою работу даже если убить процесс wget. Они так и висят в памяти, а скрипты продолжают работать.

Процессы накапливаются, кушают всю оперативку и сервер apache перестаёт отвечать.

На сколько я понял по информации на эту тему проблема в mod_php и том, что скрипты не выдают никакого контента пользователю и не расходуют ресурсы процессора и поэтому не попадают ни под один лимит.


Что делать? Как застраховать сервер от таких скриптов?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "apache mod_php повисают скрипты"  +/
Сообщение от PavelR (??) on 11-Мрт-11, 20:02 
> Здравствуйте.
> При запуске скрипта через cron каждую минуту следующим образом: wget "http://site.ru/index.php?param=param1"
> Экземпляры apache (httpd), которые обрабатывают этот запрос начинают повисать. Точнее
> не прекращают свою работу даже если убить процесс wget. Они так
> и висят в памяти, а скрипты продолжают работать.

процессы апача и не должны завершаться. Изучите, как работает апач.
На основании чего высказывается предположение, что скрипты продолжают работать ?
В курсе ли вы про наличие mod_status ?

> Процессы накапливаются, кушают всю оперативку и сервер apache перестаёт отвечать.

печаль...

> На сколько я понял по информации на эту тему проблема в mod_php
> и том, что скрипты не выдают никакого контента пользователю и не
> расходуют ресурсы процессора и поэтому не попадают ни под один лимит.

так не расходуют ресурсы процессора или продолжают работать ? :-)

> Что делать? Как застраховать сервер от таких скриптов?

max_execution_time = 30;  в php.ini

возможно надо блокировать функцию set_time_limit(0); я не в курсе.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "apache mod_php повисают скрипты"  +/
Сообщение от Frei (ok) on 11-Мрт-11, 21:22 
> процессы апача и не должны завершаться. Изучите, как работает апач.
> На основании чего высказывается предположение, что скрипты продолжают работать ?
> В курсе ли вы про наличие mod_status ?

Могу конечно ошибаться, но количество процессов апач всё же изменяется, иначе не нужны были бы лимиты на максимальное и минимальное количество процессов.

Предположение стало фактом после того как без дополнительных запусков скриптов те, что висели в памяти и не завершались стали выдавать результаты в БД. Т.е. скрипт должен уже завершиться, а он всё ещё работает и выдаёт результаты в БД.

Да, конечно в курсе. Вот как раз по mod_status и видно что процессы повисли на стадии выдачи результатов пользователю (W) и видно что именно те, которые работали со скриптом.

И там же видно что процессы копятся.

>> На сколько я понял по информации на эту тему проблема в mod_php
>> и том, что скрипты не выдают никакого контента пользователю и не
>> расходуют ресурсы процессора и поэтому не попадают ни под один лимит.
> так не расходуют ресурсы процессора или продолжают работать ? :-)

Расходуют оперативу, за счёт чего всё и перестаёт работать. А вот ресурсов процессора им нужно катастрофически мало и поэтому max_execution_time о котором вы пишете ниже не срабатывает. Точнее срабатывает, но на много позднее чем нужно.

max_execution_time - это не общее время работы скрипта, на сколько я помню, а именно потраченное процессорное время. В любом случае этот лимит стоит и толку нет.


>> Что делать? Как застраховать сервер от таких скриптов?
> max_execution_time = 30;  в php.ini
> возможно надо блокировать функцию set_time_limit(0); я не в курсе.

Отключил disable_functions="set_time_limit". Проверю и отпишусь. Но, что то мне подсказывает что такой ход не поможет так как эта функция в данном скрипте не используется :)


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "apache mod_php повисают скрипты"  +/
Сообщение от PavelR (??) on 11-Мрт-11, 21:26 
я так понял, что скрипты - ваши ?

1) скрипты обучить блокировкам. Если один процесс выполняет задачу, другой процесс как правило не нужен, или даже вреден.

2) Скрипты убрать из запуска как mod_php, запускать либо кроном напрямую, либо даймоном системы. Ибо крива архитектура.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "apache mod_php повисают скрипты"  +/
Сообщение от Frei (ok) on 11-Мрт-11, 21:30 
> я так понял, что скрипты - ваши ?
> 1) скрипты обучить блокировкам. Если один процесс выполняет задачу, другой процесс как
> правило не нужен, или даже вреден.
> 2) Скрипты убрать из запуска как mod_php, запускать либо кроном напрямую, либо
> даймоном системы. Ибо крива архитектура.

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

Тут вопрос в другом - как вообще от этого застраховаться?

А запускать напрямую не удобно, да и в этом случае всё равно их никак не ограничить. При таком варианте скрипты будут работать столько, сколько захочет разработчик - опять же никак не подстраховаться от повисаний и слишком долгой работы.

И интересно как такая проблема на хостингах решается? Я сейчас куда нибудь эти скрипты закину на хостинг и буду вешать там постоянно апач. ДДОС получается :)

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "apache mod_php повисают скрипты"  +/
Сообщение от PavelR (??) on 11-Мрт-11, 22:10 
>[оверквотинг удален]
>> 2) Скрипты убрать из запуска как mod_php, запускать либо кроном напрямую, либо
>> даймоном системы. Ибо крива архитектура.
> Скрипты писал не я. Обучить то обучим.
> Второй и третий и т.д. скрипты нужны, они параллельно работают для увеличения
> быстродействия
> Тут вопрос в другом - как вообще от этого застраховаться?
> А запускать напрямую не удобно, да и в этом случае всё равно
> их никак не ограничить. При таком варианте скрипты будут работать столько,
> сколько захочет разработчик - опять же никак не подстраховаться от повисаний
> и слишком долгой работы.

Вот так вот вроде можно. http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidbu...

<?
for($i=0;$i<60;$i++) {
    sleep(10);
    print $i;
    print "
";
}
?>

mod_php - выводит полный результат через 10 минут. mod_fcgid - таймаутится, помоему через 40 секунд, но остается процесс в системе... Грустно.

тут http://forum.nginx.org/read.php?25,30727,31964 говорят что php-fpm умеет ограничивать подобное. =)

> И интересно как такая проблема на хостингах решается? Я сейчас куда нибудь
> эти скрипты закину на хостинг и буду вешать там постоянно апач.
> ДДОС получается :)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "apache mod_php повисают скрипты"  +/
Сообщение от Frei (ok) on 14-Мрт-11, 20:58 
>[оверквотинг удален]
> <?
> for($i=0;$i<60;$i++) {
>     sleep(10);
>     print $i;
>     print "
> ";
> }
> ?>
> mod_php - выводит полный результат через 10 минут. mod_fcgid - таймаутится, помоему
> через 40 секунд, но остается процесс в системе... Грустно.

мод_пхп и через 10 минут ничего не выводит. Процессы всё равно висят.

Проблему собственно решили пока просто отключением скрипта по собственному желанию. Сделали exit.


> тут http://forum.nginx.org/read.php?25,30727,31964 говорят что php-fpm умеет ограничивать
> подобное. =)

Вроде да, но с этим зверем я ещё не сталкивался. Да и чёт народ пишет что на офф сайте нет информации по прикручиванию к апач. Сам ещё не посмотрел.

Спасибо за ссылку на досуге попробую прикрутить, чтобы проверить. Потом отпишусь.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

4. "apache mod_php повисают скрипты"  +/
Сообщение от Frei (ok) on 11-Мрт-11, 21:26 
> Отключил disable_functions="set_time_limit". Проверю и отпишусь. Но, что то мне подсказывает
> что такой ход не поможет так как эта функция в данном
> скрипте не используется :)

Не помогло.


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру