2012-09-24 10 views
19

Używam Inspektora (3.0a12) na Ubuntu 12.04 do zarządzania pracownikami mechaników php. Czasami robotnicy zostają złapani w dziwnym stanie, w którym używają ton cpu i barana. Chociaż zastanawiam się nad tym problemem, pomyślałem, że byłoby miło, gdyby Supervisor automatycznie zabijał i odświeżał pracowników. Spojrzałem na http://supervisord.org/configuration.html dokumentację konfiguracyjną i nie widziałem żadnych opcji, które by na to pozwoliły.Mieć Supervisord Okresowo restartować procesy potomne

Czy ktoś wie, czy możliwe jest okresowe uruchamianie przez supervisora ​​wszystkich procesów, którymi zarządza?

Odpowiedz

20

Urządzenie superlance package oferuje memmon plugin dla przełożonego. memmon monitoruje wykorzystanie pamięci dla programów pod kontrolą nadzoru.

skonfigurować memmon jako EventListener Promotor:

[eventlistener:memmon] 
command=memmon -a 200MB 
events=TICK_60 

Powyższe zestawy konfiguracyjne memmon zrestartować dowolny program pod kontrolą administratora, jeżeli przekracza zużycie pamięci 200MB. Sprawdza co 60 sekund.

Możesz skonfigurować program Memmon do monitorowania określonych programów lub grup programów, ustawiając limity dla każdego z nich.

+0

Jeśli używam Supervisor, który wykorzystuje proces takich jak „Xvfb-run”, który rozpoczyna się kolejny proces, powiedzmy xul biegaczem, to nie tylko memmon zapis pamięci, który jest łatwy poprzez Xvfb lub wszystkich procesów potomnych? – CMCDragonkai

+0

Uważam, że będzie monitorować tylko bezpośrednie procesy potomne. Instrukcja stwierdza: *** Memmon ** nie jest w stanie monitorować statusu procesu procesów, które nie są procesami ** ** nadzoru ** * xul runner nie byłby dzieckiem supervisordu, ale systemem xvfb-run. –

+0

Czy są jakieś prace dookoła? – CMCDragonkai

20

Można użyć crontab do przekazywania poleceń bezpośrednio do supervisorctl. Na przykład poniższe spowoduje ponowne uruchomienie procesu co 20 minut.

0,20,40 * * * * /path/to/supervisorctl restart [supervisor_process] 
+0

Spowoduje to wznowienie procesu, ale podejrzewam, że zabiłoby to również uruchamianie drobnych procesów, więc może spowodować utratę danych z tymi. (np. z procesami roboczymi nie tylko bezstanowymi aplikacjami) – tristanbailey

+1

Procesy umierają z wielu powodów: ważne jest, aby były odporne na nieoczekiwane restarty. Jeśli więc ta strategia spowodowałaby utratę danych, to jest to błąd, niezależnie od tego, czy użycie crona do tego celu jest właściwym rozwiązaniem. – jma

Powiązane problemy