Виж темите без отговор | Виж активните теми
Дата и час: Пет Мар 29, 2024 12:46 pm
Процес, който следи и при проблем рестартира програма в win
Автор |
Съобщение |
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 11:00 am Мнения: 450 Местоположение: Plovdiv
|
Процес, който следи и при проблем рестартира програма в win
Здравейте, пиша на C++/Qt една програма, която по някакви неизяснени причини забива понякога, а това не е добре, защото тя трябва да работи непрекъснато.
Идеята ми е следната: от програмата пускам процес (програма без GUI), който да праща съобщения на главната програма през някакъв udp порт и тя да отговаря. Ако не отговори, процеса да "kill-не" забилата програма (може и да се е затворила по някаква причина) и да я стартира наново. В главната програма разбира се ще проверявам дали е пуснат вече процеса и няма да го пускам наново. Добра ли е идеята?
_________________ for(;;) DoFire();
|
Чет Ное 24, 2011 5:11 pm |
|
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 11:02 am Мнения: 8873 Местоположение: Разград
|
Re: Процес, който следи и при проблем рестартира програма в
Добра идея е да отстраниш причината за забиването... Тва е същото като да се оправят хардуерни проблеми със софтуерни гимнастики - винаги съм бил против. Ами я си представи че и скрития процес забие. Или пък някой антивирусна/файъруол го блокира...
|
Чет Ное 24, 2011 5:37 pm |
|
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 8:21 pm Мнения: 27949 Местоположение: София
|
Re: Процес, който следи и при проблем рестартира програма в
Е отстраняването на забиването при Win приложение може да се окаже невъзможно, особенно при по сложни приложения и след 20-30 дни работа, да не говорим че в момента имам такъв пробелм със софтуер който струва 10 хил еур и уж е върхът на сладоледа а не могат да ми намерят решение.
|
Чет Ное 24, 2011 6:11 pm |
|
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 11:02 am Мнения: 8873 Местоположение: Разград
|
Re: Процес, който следи и при проблем рестартира програма в
Ами в такъв случай да не ползва Win ... Де да знам... Аз бих търсил проблема в софта, а не да се мъча да го рестартирам от време на време. Верно че като е голям софта става зор...
|
Чет Ное 24, 2011 10:05 pm |
|
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 12:59 pm Мнения: 3855 Местоположение: Габрово
|
Re: Процес, който следи и при проблем рестартира програма в
+1 да се намери проблема в софтуера - не се знае дали няма да е по-лесно правенето на монитор. Ако е за помощ за търсене на проблема да го мислим, но за такова чудо не ... Между другото, CCS на TexasInstruments има такава простотия - стои в трейа и следи дали основния процес не е забил . Но въпреки това не е добра идея. Какво става ако "убиването" стане в кофти момента, и загуби работата на клиента, или счупи нещо друго? Що сърбеж ще има за разработчика...
|
Пет Ное 25, 2011 8:44 am |
|
|
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 11:00 am Мнения: 450 Местоположение: Plovdiv
|
Re: Процес, който следи и при проблем рестартира програма в
Да, най-добре би било да се открие проблема, но при мен не иска да забива. Софтуерът не прави кой знае какво, следи дали са се появили едни файлове в една папка, чете ги и после ги мести в друга, освен това ако трябва изпраща прочетените неща + малко потребителкси интерфейс. Важното в случая е да работи, защото файловете се слагат от далече и се очаква да се обработят. Другият проблем е, че шефа иска да записвам грешките в лог файл, но за сега не съм намерил начин, по който да ги прихвана, става въпрос за грешки от сорта на делене на нула и подобни ситуации
_________________ for(;;) DoFire();
|
Пет Ное 25, 2011 9:19 am |
|
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 12:59 pm Мнения: 3855 Местоположение: Габрово
|
Re: Процес, който следи и при проблем рестартира програма в
На какво е писан този софтуер? Remote debug не можеш да пуснеш? Някакъв лог, трейс, debugview? Ако е толкова прост софтуер би трябвало да е лесно да се разбере по логовете къде се случва. Т.е. трябва ти exception handling - затова питам на какво е писан софтуера.
|
Пет Ное 25, 2011 1:51 pm |
|
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 8:39 pm Мнения: 1954
|
Re: Процес, който следи и при проблем рестартира програма в
Направи си exception handler. По нета има достатъчно инфо. Преди 10-тина години го имах тоя проблем - при мен всичко е ок, при клиента някой път гърми, а софта трябваше да работи 24/7. Ползвах функциите от dbghelp.dll. Като се оцапа нещо зписва в един архив необходимото инфо, пращат ми файла и след това през WinDbg гледах какво се е случило.
_________________ Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!
|
Пет Ное 25, 2011 2:38 pm |
|
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 9:28 am Мнения: 2657
|
Re: Процес, който следи и при проблем рестартира програма в
живота не е идеален и понякога спасението е в такива куци решения като това. разбира се може да минеш на линукс, там нищо не забива, розови понита припкат по дъгата, а след година като се очистиш от корпоративната отрова лайната ти ще придобият аромат на рози , но ако искаш да останеш на тъмната страна, препоръчвам ти не да пингваш процеса по удп, а обратното - процеса да се обажда, аналогично на wdt концепцията. ако ти го пингваш, не е сигурно дали няма бодро да отговаря а всъщност да е жива само отговарящата част.
|
Пет Ное 25, 2011 7:30 pm |
|
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 10:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Re: Процес, който следи и при проблем рестартира програма в
Вчера четох статийка за космическите компютри - в тях се ползва същият трик, въпреки че са били проектирани да не забиват никога...
|
Пет Ное 25, 2011 11:33 pm |
|
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 8:55 am Мнения: 1718
|
Re: Процес, който следи и при проблем рестартира програма в
Може да не си фен на Линукс но имай предвид че не съм видял в цялата си практика с линукс повече от 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 |
|
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 10:53 pm Мнения: 4174 Местоположение: Brussels / Пловдив
|
Re: Процес, който следи и при проблем рестартира програма в
Абе я му сложи един хардуерен watchdog да рестартира целия компютър - ще работи желязно при всякакви условия
_________________ Мразя да мразя ...
|
Нед Ное 27, 2011 1:31 pm |
|
|
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 11:00 am Мнения: 450 Местоположение: Plovdiv
|
Re: Процес, който следи и при проблем рестартира програма в
Ако беше при мен няма проблем да му сложа watchdog Тази програма ще бъде при клиентите и трябва да работи непрекъснато (поне докато не я затворят по някаква причина) без да забива. Забиването се е случило при тях, а при мен работи и затова евентуалният проблем не е изяснен. Работя с Qt, но четох, че няма нищо готово за такива ситуации. Твърдо ще се работи с windows, защото клиентите работят с него, иначе може да се компилира и за linux, дори и за mac. Имате ли някакъв пример за exception handler или някъде да прочета?
_________________ for(;;) DoFire();
|
Пон Ное 28, 2011 11:51 am |
|
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 8:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
Re: Процес, който следи и при проблем рестартира програма в
Щом е win - поискай клиентите да ти пратят Control Panel->Administrative Tools->Window Logs->Application лога ако е "принудително" затворено приложението ти - със сигурност ще има запис в него (доколко ще е полезен ... зависи и от теб)...
|
Пон Ное 28, 2011 12:36 pm |
|
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 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 |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 5 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|