The OpenNET Project / Index page

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

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

"Время жизни perl процесса"  +/
Сообщение от SergeyKa email(ok) on 30-Дек-10, 11:40 
Написан скрипт на Perl, который разбирает поступающие письма и помещает данные из вложений в базу mysql. В одном месте скрипта необходимо установить задержку выполнения на 14 часов.
Поставил команду sleep 50400, и всё бы хорошо, но скрипт через какое то время завершается системой.

команда top
  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
22270 mailnull        1   8    0 56252K 55536K nanslp   0:04  0.00% perl

ps axu | grep perl:
mailnull   22270  0.0  1.8 56252 55536  p0  I+   11:36AM   0:04.03 /usr/local/bin/perl /usr/local/cgi/price/mail_price.pl

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

Оглавление

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


1. "Время жизни perl процесса"  +/
Сообщение от Stell (??) on 30-Дек-10, 15:21 
А кто запускает этот скрипт, непосредственно MTA? Тогда скорее всего MTA его и прибивает по какому-то таймауту, надо его доки читать.
Варианты решения:
1) Крутить MTA
2) Форкать скрипт, папу убивать, дочка отвязанная от родителя будет жить сколько захочет.
3) Варианты 1 и 2 - ИМХО костыли, ибо тупо ждать 14 часов - это неправильно. Я бы менял архитектуру, например скидывать данные в очередь с датой поступления, и по крону проверять.

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

2. "Время жизни perl процесса"  +/
Сообщение от SergeyKa email(ok) on 30-Дек-10, 16:54 
> А кто запускает этот скрипт, непосредственно MTA? Тогда скорее всего MTA его
> и прибивает по какому-то таймауту, надо его доки читать.
> Варианты решения:
> 1) Крутить MTA
> 2) Форкать скрипт, папу убивать, дочка отвязанная от родителя будет жить сколько
> захочет.
> 3) Варианты 1 и 2 - ИМХО костыли, ибо тупо ждать 14
> часов - это неправильно. Я бы менял архитектуру, например скидывать данные
> в очередь с датой поступления, и по крону проверять.

Совершенно верно - MTA exim запускает
Второй вариант нравится меньше всего
Третих вариантов куча, но думал до этого не дойдёт...

Самый простой способ запускать по крону проталкивающий скрипт :)


Спасибо за помощь! С наступающим :)

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

3. "Время жизни perl процесса"  +/
Сообщение от Andrey Mitrofanov on 31-Дек-10, 12:13 
>> А кто запускает этот скрипт, непосредственно MTA? Тогда скорее всего MTA его
>> и прибивает по какому-то таймауту, надо его доки читать.
>> Варианты решения:
>> 2) Форкать скрипт, папу убивать, дочка отвязанная от родителя будет жить сколько
>> захочет.
> Совершенно верно - MTA exim запускает
> Третих вариантов куча, но думал до этого не дойдёт...

Четвёртый - поробовать пускать скрипт nohup -ом.

> Самый простой способ запускать по крону проталкивающий скрипт :)

Не факт, что у "детей капитана Крона" время жизни не ограничено _ещё _больше...

> Спасибо за помощь! С наступающим :)

Пасиб! Всех с! :))

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

6. "Время жизни perl процесса"  +/
Сообщение от PavelR (??) on 09-Янв-11, 10:08 
>> Самый простой способ запускать по крону проталкивающий скрипт :)
> Не факт, что у "детей капитана Крона" время жизни не ограничено _ещё
> _больше...

Эхх, праздники-то сказываются =)


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

4. "Время жизни perl процесса"  +/
Сообщение от Andrey Mitrofanov on 31-Дек-10, 12:27 
> Написан скрипт на Perl, который разбирает поступающие письма и помещает данные из
> вложений в базу mysql. В одном месте скрипта необходимо установить задержку
> выполнения на 14 часов.
> Поставил команду sleep 50400, и всё бы хорошо, но скрипт через какое
> то время завершается системой.

И кстати, про "менять архитектуру":
at ... $(date -d "+14 hours")

Ну, или очередь, демон, сканирующий (костыль: прикрутить к сканированию очереди самим exim-ом или типа того) раз в N-цать минут-седунд на предмет "созревших" файлов-писем и т.д. ... Вот такой энтерпрайзный энрерпрайз.

NAME
       at,  batch,  atq, atrm - queue, examine or delete jobs for later execu-
       tion

SYNOPSIS
       at [-V] [-q queue] [-f file] [-mldbv] TIME
       at -c job [job...]
       atq [-V] [-q queue]
       atrm [-V] job [job...]
       batch
...

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

5. "Время жизни perl процесса"  +/
Сообщение от SergeyKa email(ok) on 09-Янв-11, 09:00 
>[оверквотинг удален]
> atrm - queue, examine or delete jobs for later execu-
>        tion
> SYNOPSIS
>        at [-V] [-q queue] [-f
> file] [-mldbv] TIME
>        at -c job [job...]
>        atq [-V] [-q queue]
>        atrm [-V] job [job...]
>        batch
> ...

На самом деле задача проще.
Просто есть поставщик, который отправляет ну ОООЧень большой прайс и делает это днём в самый разгар работы. При подгрузке этого прайса система блокирует таблицы во избежание ошибок и стоит задача отсрочить подгрузку до нерабочего времени, например в 1 час ночи.
соответственно проще запустить по крону ещё один скрипт, который при наличии свежего прайса во временной таблице - перенесёт его в рабочую базу :)

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

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

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




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

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