Отговори на тема  [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща
Процес, който следи и при проблем рестартира програма в win 
Автор Съобщение
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Нед Сеп 17, 2006 11:00 am
Мнения: 450
Местоположение: Plovdiv
Мнение Процес, който следи и при проблем рестартира програма в win
Здравейте, пиша на C++/Qt една програма, която по някакви неизяснени причини
забива понякога, а това не е добре, защото тя трябва да работи непрекъснато.

Идеята ми е следната: от програмата пускам процес (програма без GUI), който да праща съобщения на главната програма през някакъв udp порт и тя да отговаря. Ако не отговори, процеса да "kill-не" забилата програма (може и да се е затворила по някаква причина) и да я стартира наново. В главната програма разбира се ще проверявам дали е пуснат вече процеса и няма да го пускам наново.
Добра ли е идеята?

_________________
for(;;)
DoFire();


Чет Ное 24, 2011 5:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8873
Местоположение: Разград
Мнение Re: Процес, който следи и при проблем рестартира програма в
Добра идея е да отстраниш причината за забиването... Тва е същото като да се оправят хардуерни проблеми със софтуерни гимнастики - винаги съм бил против. Ами я си представи че и скрития процес забие. Или пък някой антивирусна/файъруол го блокира...


Чет Ное 24, 2011 5:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Процес, който следи и при проблем рестартира програма в
Е отстраняването на забиването при Win приложение може да се окаже невъзможно, особенно при по сложни приложения и след 20-30 дни работа, да не говорим че в момента имам такъв пробелм със софтуер който струва 10 хил еур и уж е върхът на сладоледа а не могат да ми намерят решение.


Чет Ное 24, 2011 6:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 11:02 am
Мнения: 8873
Местоположение: Разград
Мнение Re: Процес, който следи и при проблем рестартира програма в
Ами в такъв случай да не ползва Win ... Де да знам... Аз бих търсил проблема в софта, а не да се мъча да го рестартирам от време на време. Верно че като е голям софта става зор...


Чет Ное 24, 2011 10:05 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Процес, който следи и при проблем рестартира програма в
+1 да се намери проблема в софтуера - не се знае дали няма да е по-лесно правенето на монитор. Ако е за помощ за търсене на проблема да го мислим, но за такова чудо не ...
Между другото, CCS на TexasInstruments има такава простотия - стои в трейа и следи дали основния процес не е забил :D . Но въпреки това не е добра идея.
Какво става ако "убиването" стане в кофти момента, и загуби работата на клиента, или счупи нещо друго? Що сърбеж ще има за разработчика...


Пет Ное 25, 2011 8:44 am
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Нед Сеп 17, 2006 11:00 am
Мнения: 450
Местоположение: Plovdiv
Мнение Re: Процес, който следи и при проблем рестартира програма в
Да, най-добре би било да се открие проблема, но при мен не иска да забива. Софтуерът не прави кой знае какво, следи дали са се появили едни файлове в една папка, чете ги и после ги мести в друга, освен това ако трябва изпраща прочетените неща + малко потребителкси интерфейс. Важното в случая е да работи, защото файловете се слагат от далече и се очаква да се обработят. Другият проблем е, че шефа иска да записвам грешките в лог файл, но за сега не съм намерил начин, по който да ги прихвана, става въпрос за грешки от сорта на делене на нула и подобни ситуации :?

_________________
for(;;)
DoFire();


Пет Ное 25, 2011 9:19 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: Процес, който следи и при проблем рестартира програма в
На какво е писан този софтуер? Remote debug не можеш да пуснеш? Някакъв лог, трейс, debugview? Ако е толкова прост софтуер би трябвало да е лесно да се разбере по логовете къде се случва.
Т.е. трябва ти exception handling - затова питам на какво е писан софтуера.


Пет Ное 25, 2011 1:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 8:39 pm
Мнения: 1954
Мнение Re: Процес, който следи и при проблем рестартира програма в
Направи си exception handler. По нета има достатъчно инфо. Преди 10-тина години го имах тоя проблем - при мен всичко е ок, при клиента някой път гърми, а софта трябваше да работи 24/7. Ползвах функциите от dbghelp.dll. Като се оцапа нещо зписва в един архив необходимото инфо, пращат ми файла и след това през WinDbg гледах какво се е случило.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!


Пет Ное 25, 2011 2:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 9:28 am
Мнения: 2657
Мнение Re: Процес, който следи и при проблем рестартира програма в
живота не е идеален и понякога спасението е в такива куци решения като това. разбира се може да минеш на линукс, там нищо не забива, розови понита припкат по дъгата, а след година като се очистиш от корпоративната отрова лайната ти ще придобият аромат на рози ;) , но ако искаш да останеш на тъмната страна, препоръчвам ти не да пингваш процеса по удп, а обратното - процеса да се обажда, аналогично на wdt концепцията. ако ти го пингваш, не е сигурно дали няма бодро да отговаря а всъщност да е жива само отговарящата част.


Пет Ное 25, 2011 7:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 10:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: Процес, който следи и при проблем рестартира програма в
Вчера четох статийка за космическите компютри - в тях се ползва същият трик, въпреки че са били проектирани да не забиват никога...


Пет Ное 25, 2011 11:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 8:55 am
Мнения: 1718
Мнение Re: Процес, който следи и при проблем рестартира програма в
zaphod написа:
живота не е идеален и понякога спасението е в такива куци решения като това. разбира се може да минеш на линукс, там нищо не забива, розови понита припкат по дъгата, а след година като се очистиш от корпоративната отрова лайната ти ще придобият аромат на рози ;) , но ако искаш да останеш на тъмната страна, препоръчвам ти не да пингваш процеса по удп, а обратното - процеса да се обажда, аналогично на wdt концепцията. ако ти го пингваш, не е сигурно дали няма бодро да отговаря а всъщност да е жива само отговарящата част.

Може да не си фен на Линукс но имай предвид че не съм видял в цялата си практика с линукс повече от 13г вече сървър на Линукс да се рестартира заради ъпдейти освен ако не е kernel ъпдейт!
За забиването виждал съм и в Линукс програма да забива на няколко вида софтуер но като цяло системата не забива, килваш си процеса и продължаваш напред без рестарт. За WIN-а може да се пробваш да го килнеш процеса ама в повечето случай килването е малко вероятно да сработи и си трябва рестарт, не съм си играл толкова много вероятно вече WIN-7 версията да е по добре в това отношение !
И на win има как да се пуска нещо подобно на cronjob казва се Schedule task менажер, залагаш си проверяващия софт там, на минута мисля е възможно най честото стартиране. Най добре е да е версия на клиентския софтуер и да връща позитивен отговор ако всичко е наред ако не рестарт на програмата може и компа :)
Намира се :
Start button Picture of Start button, click Control Panel, and then click System and Maintenance. Under Administrative Tools, click Schedule tasks.

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Нед Ное 27, 2011 3:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4174
Местоположение: Brussels / Пловдив
Мнение Re: Процес, който следи и при проблем рестартира програма в
Абе я му сложи един хардуерен watchdog да рестартира целия компютър - ще работи желязно при всякакви условия :D

_________________
Мразя да мразя ...


Нед Ное 27, 2011 1:31 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Нед Сеп 17, 2006 11:00 am
Мнения: 450
Местоположение: Plovdiv
Мнение Re: Процес, който следи и при проблем рестартира програма в
Ако беше при мен няма проблем да му сложа watchdog :lol:
Тази програма ще бъде при клиентите и трябва да работи непрекъснато (поне докато не я затворят по някаква причина) без да забива. Забиването се е случило при тях, а при мен работи и затова евентуалният проблем не е изяснен. Работя с Qt, но четох, че няма нищо готово за такива ситуации. Твърдо ще се работи с windows, защото клиентите работят с него, иначе може да се компилира и за linux, дори и за mac. Имате ли някакъв пример за exception handler или някъде да прочета?

_________________
for(;;)
DoFire();


Пон Ное 28, 2011 11:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 8:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение Re: Процес, който следи и при проблем рестартира програма в
Щом е win - поискай клиентите да ти пратят Control Panel->Administrative Tools->Window Logs->Application лога
ако е "принудително" затворено приложението ти - със сигурност ще има запис в него (доколко ще е полезен ... зависи и от теб)...


Пон Ное 28, 2011 12:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Процес, който следи и при проблем рестартира програма в
Ами по принцип да се направи по сложна win програма незабиваща е трудно но не невъзможно, при нас имаме вече сигурно над 1 млн реда код, с много мултимедия, мрежа и общо взето май всичко което може да се позлва по едно РС под WIN, забивания се случват веднъж на 10 дни, почти във всички случаи боза е проблема но има и софтуерни които няма как да се изчистят преди да са се появили поне 2-3 пъти, и много малък е шанса да се появят при тестване в офиса, освен ако не тестваме 100-на машини в рамките на една две години и 2-3-ма човека само с това да се занимават ... Та спасението е в кучето а тестери са ни клиентите, при голям брой копия шанса да хванеш някакъв странен бъг е доста по голям. Звучи гадно ама е така, но пък софтуера не управлява атомни централи така че те дорине го забелязват ако се случи.
Обаче в твоя случай говорим за нещо доста по просто, изключая мрежовата комуникация това горе долу го прави при нас едно модулче което се грижи за ъпдейт на съдържанието, под линукс работи идея си нямам колко време, по едно време беше умряло, ама не беше ясно защо, май от последния физически рестарт на сървъра не е рестартвано, поне 2-3 месеца има сигурно. Под боз същия код също работи, и май бая изкарва, не знам колко, на боз са ми само тестови машини които ги рестартирам по какви ли не причини, вкл. и при спиране на тока, но се е случвало да работи по 2-3 седмици преди рестарт и няма забиване. Та това което искам да кажа е по добре търси проблема. Детайли не помня, но MS боз имаше някаква гадост при работата с файлове, това което помня е че едни конфиг файлове уж се зьаписваха а после не бяха записани, та може нещо от работата с файловете да се окотва, или пък нещо мрежово, незатворени портове не знам как ти е написано, ама би трябвало да можеш да го докараш до състояние да не забива, а отделно кучето си е куче, за всяко по сериозно нещо си го иска ако ще и 1000% да е сигурно че не забива.


Сря Яну 04, 2012 1:55 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни