URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5468
[ Назад ]

Исходное сообщение
"Apache2 mod_perl open внешние программы"

Отправлено jr , 14-Янв-08 12:45 
Работает сервер Apache/2.2.6 Embedded Perl version v5.8.8
Скрипты perl через mod_perl запускают внешние программы shell через open( "/path/to/prog |" )

Бывает так, что эти внешние программы работают очень долго, или просто зависают и пользователи прерывают коннект браузера к серверу кнопкой "стоп". Так вот apache не убивает эти зависшие программы и они остаются висеть в памяти навсегда -- по команде ps видно, что они запущены.

Как это предотвратить, т.е. заставить apache убивать такие программы по таймауту?


Содержание

Сообщения в этом обсуждении
"Apache2 mod_perl open внешние программы"
Отправлено Splushkin , 16-Янв-08 14:23 
Нужно использовать таймаут в нутри скрипта
Таймауты вроде есть в IO::Select

если прога не закончила выполнение за таймаут, закрываем её хендлер
на всякий случай можно ещё процесс пристреливать, на случай если прога не реагирует на SIG_INT


"Apache2 mod_perl open внешние программы"
Отправлено jr , 22-Янв-08 09:42 
>Нужно использовать таймаут в нутри скрипта
>Таймауты вроде есть в IO::Select
>
>если прога не закончила выполнение за таймаут, закрываем её хендлер
>на всякий случай можно ещё процесс пристреливать, на случай если прога не
>реагирует на SIG_INT

Это не выход... Нужно иметь возможность убивать процессы средствами самого Apache


"Apache2 mod_perl open внешние программы"
Отправлено Splushkin , 05-Апр-08 22:20 

>Это не выход... Нужно иметь возможность убивать процессы средствами самого Apache

сам подумал что сказал?

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

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


"Apache2 mod_perl open внешние программы"
Отправлено jr , 07-Апр-08 09:41 
>а если имеется в виду то что пользователи хостинга делают такие косяки,
>и какиенить висяки память жрут,
>то надо по крону вызывать скриптик и смотреть порожденные от апача процессы,
>смотреть сколько они работают, и убивать те которые слишком долго работают,
>

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