Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поймать точку выхода из скрипта 
V
    Опции темы
Secandr
Дата 9.9.2014, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Добрый день,

есть софтина на 200кб - САР сети. Скрипт проходит по 3000 железок и выверяет на них настройки.
До определённого момента всё работало нормально. В 9 потоков задача выполнялась за 3-4 часа.
После очередной доработки логики проверки конфигурации скрипт начал "заканчиваться" неожиданно.

Самое печальное, что заканчивается он без сообщений об ошибках, заканчивается в разных местах и работает разное время (от 1 часа до 7 часов). 

Помирает он не в момент максимальной нагрузки. В логах системы в момент смерти ничего нет.

Вопрос: как поймать момент выхода из скрипта и узнать откуда он выходит и почему?

Откатиться на старую версию не вариант, это приведёт к проблемам на сети несравнимым с вылетом скрипта.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
arto
Дата 9.9.2014, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



попробуйте определить $SIG{__DIE__}.
Либо используйте Devel::Trace
PM MAIL ICQ   Вверх
Secandr
Дата 9.9.2014, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Вот спасибо, Devel::Trace - то что надо.
О перехвате сигналов я думал, но там не факт, что сигнал приходит из вне. А вот вместе перехват сигналов +  Devel::Trace дадут искомый результат smile

Я сделал жалкую подобию  Devel::Trace, первой строчкой в каждом методе идёт на вывод на экран названия процедуры и параметров при включеном внутреннем дебаге. Помогает разобраться с бизнеслогикой в случае кривой настройки оборудования.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
noize
Дата 9.9.2014, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Цитата

В 9 потоков задача выполнялась за 3-4 часа.

лучше форкнуться 9 раз, получится надёжнее

Это сообщение отредактировал(а) noize - 9.9.2014, 17:04
PM MAIL   Вверх
Secandr
Дата 10.9.2014, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



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


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Secandr
Дата 10.9.2014, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Печаль, Devel::Trace сжирает всё свободное место на винте за час работы. Нужно писать по крону скриптик, который будет проверять наличие процесса в памяти и если он ещё там обнулять файл...


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Pfailed
Дата 10.9.2014, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Ставлю на необработанный SIGPIPE

Добавлено через 3 минуты и 39 секунд
http://forum.vingrad.ru/act-ST/f-182/t-345963.html


--------------------
PM MAIL   Вверх
Secandr
Дата 10.9.2014, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



После включения дебага скрипт перестал дохнуть... что печально.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
noize
Дата 10.9.2014, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Цитата(Secandr @ 10.9.2014,  09:25)
Форкать неудобно, будет приходить 9 отчётов.

Можно сводить данные из всех форков в один хеш с использованием IPC::Shareable
PM MAIL   Вверх
Secandr
Дата 11.9.2014, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



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

noize, спасибо, переписал на fork, ночью проверим. Форк оказался более предсказуемым и логи о варнингах доходить стали от потомков.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
noize
Дата 11.9.2014, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Цитата

При запуске по крону дохнет еженочно

быть может потому, что при запуске из крона используются свои переменные окружения и при таких запусках всегда надо использовать абсолютные пути.
PM MAIL   Вверх
Pfailed
Дата 11.9.2014, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Можно ещё через strace подцепиться к процессу: strace -p pid
И последние 1000 строк, скажем, писать в файл. Типа
Код

strace -p pid 2>&1 | perl -ne 'push @lines, $_; shift @lines if @lines > 1000; END{open $fh, ">log.txt" or die $!;  print $fh $_ for @lines} '

Часто по системным вызовам тоже можно обнаружить проблему.



--------------------
PM MAIL   Вверх
Secandr
Дата 11.9.2014, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



noize, тут-то мы учёные с путями. fork`нутый скрипт запущенный из консоли не вылетел, ждём боевой прогон ночью.

Похоже что-то криво было в потоках...


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Secandr
Дата 12.9.2014, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Fork отработал ночью штатно. 
Помониторю на следующей недели как оно будет жить.

Это сообщение отредактировал(а) Secandr - 12.9.2014, 09:25


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Secandr
Дата 16.9.2014, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 1
Всего: 39



Скрипт работает стабильно.
Всем спасибо за помощь.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.