Nowe posty

Autor Wątek: Samoczynne wyłączanie się programu  (Przeczytany 5133 razy)

pasibrzuch

  • Gość
Samoczynne wyłączanie się programu
« dnia: 2011-06-09, 15:39:04 »
Mam program napisany w Javie, uruchamia się automatycznie podczas startu systemu - dopisałem go w /etc/rc.local
Program powinien działać non-stop, ale co jakiś czas, dosyć rzadko, powiedzmy raz w miesiącu, program się wyłącza. Przekierowałem standardowy strumień wyjściowy (również strumień błędów) do pliku, na wypadek, gdyby jakiś problem był z Java i gdyby coś na wyjście wypluła, ale plik jest czysty. Mam podobny program, napisane w pod mono, i sytuacja również u niego występuje, także zakładam, że to nie jest związane z Javą.
Oba programy (java, mono) są uruchamiane na zwykłym użytkowniku przy pomocy sudo.
Z tego co czytałem system ubija procesy, jeśli przekroczą dozwolone limity, sprawdziłem poleceniem ulimit i nie mam ustawionych żadnych limitów dla tego użytkownika, także to nie to.

Czy są jeszcze inne przypadki w których system (sam z siebie) ubija procesy? (poza tymi limitami). Czy gdzieś się zapisują jakieś logi z których można wyczytać, dlaczego program zakończył działanie? (zakładając, że jak się uruchomi to sam z siebie się nie wyłączy).

Ksanderon

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #1 dnia: 2011-06-09, 17:55:04 »
Podaj dystrybucję, nazwę programu i listę programów wysoce niestandardowych jakie wykorzystujesz. Ten komputer to serwer czy desktop ("powiedzmy raz w miesiącu" oznacza, że komputer chodzi non-stop i co jakiś czas trzeba zrobić restart programu czy, że wyłączasz go 10xdziennie i co 313,9 włączenie jest problem z programem)?

pasibrzuch

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #2 dnia: 2011-06-09, 21:09:48 »
CentOS, Debian (na innych nie testowane)
Program jest autorski, kończy jedynie swoje działanie, jeśli otrzyma sygnał SIGTERM czy SIGKILL, w innym przypadku powinien chodzić non stop tzn. sam siebie nie zamknie.
Jest to serwer, który chodzi non stop, ten program również chodzi (powinien) non stop. Objawia się to tak, że w pewnym momencie (tak jak pisałem, powiedzmy raz na miesiąc, może raz na dwa miesiące) usługa przestaje mi działać, wchodzę przez SSH, i okazuje się, że program nie jest włączony, problem w tym, że nie mam pojęcia dlaczego się wyłączył.

chmooreck

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #3 dnia: 2011-06-10, 10:54:35 »
nie masz wycieków pamięci (w sensie, że na przykład dokładasz do jakiegoś kontenera i nigdy nie usuwasz) ?

ZipoKing

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #4 dnia: 2011-06-10, 11:43:02 »
Ewentualnie nie zwalniasz innych zasobów, jak otwarte sockety/pliki, w rezultacie w pewnym momencie aplikacja dobija do systemowego limitu i zostaje brutalnie odłączona. Posprawdzaj poleceniami top, lsof tudzież innymi czy któryś z w/w przypadków nie zachodzi.

Ksanderon

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #5 dnia: 2011-06-11, 11:05:21 »
masz 99.(9) szansy, że jeśli to aplikacja autorska to gdzieś w niej zrobiłeś błąd- można wstępnie założyć sobie, że jeśli nikomu oprócz mnie takie coś się nie zdarza to to nie wina systemu tylko moja.

w pierwszej kolejności sprawdziłbym:
1) jeśli korzystasz z czystych socketów wszystkie funkcje (które są bardzo upierdliwe i wymagają sporej ostrożności oraz zadbania o szczegóły) szczególnie "klienckie" czyli takie, które o coś pytają inne serwery- jeśli np. przez chwilkę nie będzie połączenia to całość zrobi kaput czyli sprawdzamy wartości zwrócone przez wszystkie socket, bind, accept, listen, connect select,sockopty, fcntl etc... i close może zwalniasz coś zwolnionego gdzie indziej?
2) jeśli jest wielowątkowa to sprawdziłbym dodatkowo forki(co za dużo to nie zdrowo) i to co tam używasz do wątków(the same).
3) używasz może shared memory?
3) sprawdziłbym wszystkie miejsca gdzie aplikacja teoretycznie kończy się poprawnie i przeanalizował czy zostały uwzględnione wszystkie możliwości
4) w każdej sekwencji kodu umieściłbym sekwencję drukującą coś na ekranie i postawiłbym serwer który przetrzymywałby ważna zmienne dodatkowo u siebie- miałbyś do nic wgląd po kraszu.
5) wiesz co to są profilatory, debuggery etc...?

pasibrzuch

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #6 dnia: 2011-06-12, 14:51:22 »
Dzięki, posprawdzam, ale czy system zapisuje gdzieś informacje o tym, że ubił jakiś proces? (kiedy, jaki proces, z jakiego powodu). Byłoby to bardzo pomocne...

  • Gość
Samoczynne wyłączanie się programu
« Odpowiedź #7 dnia: 2011-06-12, 15:17:29 »
Użyj valgrinda, jest bardzo dobry do tych spraw