The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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, 14:23 , 16-Янв-08 (1)
    Нужно использовать таймаут в нутри скрипта
    Таймауты вроде есть в IO::Select

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

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

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

      • Apache2 mod_perl open внешние программы, !*! Splushkin, 22:20 , 05-Апр-08 (3)

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

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

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

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

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

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




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

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