Jak wybrać między uruchomieniem, uruchomieniem, superwizorem, daemontools itp. W celu zrestartowania procesu, jeśli on umrze?

13

Mam internetowy serwer proxy Nginx, serwer WWW gunicorn oraz aplikację sieci web python / flask. Proces Gunicorn najwyraźniej umarł i chcę to poprawić w przyszłości, szukając narzędzia, które może monitorować i ponownie uruchamiać proces Gunicorn w przypadku jego ponownego awarii.

Znalazłem kilka, które mogą wykonać tę pracę:

  • dorobkiewicz
  • Uruchom
  • kierownik
  • daemontools
  • wiele więcej

Czy istnieje obszerny artykuł, który porównuje i kontrastuje różne narzędzia używane do monitorowania i ponownego uruchamiania procesu?

Matthew Moisen
źródło
2
Powinieneś naprawdę monitorować te usługi z zewnątrz, ponieważ pojawią się sytuacje , w których przejdziesz do pętli restartu i zużyjesz wszystkie dostępne zasoby na serwerze.
EEAA,
Napisz własny kod, aby zrobić to dokładnie tak, jak chcesz. To łatwe zadanie.
Ryan Babchishin

Odpowiedzi:

3
  • runitjest następcą daemontools(oba są zapisane c)

  • supervisordwykorzystuje python.

Używam runitz socklogtego samego autora wewnątrz Alpine Linux lxc pojemników na około 10 miesięcy do zarządzania web/ databasei różne inne usługi. Jest lekki, łatwy w zarządzaniu i nie miałem żadnych awarii usług. Demon rejestrujący działa również jako własny użytkownik, a to nie rootjest miłe.

voidlinux korzysta runitz initsystemu, a także do nadzoru usług (w drzewie pakietów wyszukaj runpliki, aby znaleźć przykłady runitskryptów).

Stuart Cardall
źródło
2

Jeśli twoja dystrybucja używa Upstart, idź z nią. Ma bardzo podstawową obsługę ponownego uruchamiania zadania, ale zawiera ograniczenia, które mogą zapobiec pętli ponownego uruchomienia, jak wspomniano w @EEAA.

Jeśli twój system operacyjny korzysta z innego programu inicjującego, nie zmieniaj go. Naprawdę nie mogę ci pomóc z innymi narzędziami, o których wspomniałeś, ponieważ ogólnie używam Ubuntu, gdzie Upstart jest nadal obecny (od najnowszego LTS), więc nie mam z nimi nic wspólnego. Ale nie jest to trudne zadanie, aby utworzyć prosty skrypt uruchamiany z crona raz na minutę (lub częściej np. W pętli), który może sprawdzić, czy istnieje PID i uruchomić ponownie po awarii.

sam_pan_mariusz
źródło