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?
upstart
supervisord
daemontools
runit
Matthew Moisen
źródło
źródło
Odpowiedzi:
runit
jest następcądaemontools
(oba są zapisanec
)supervisord
wykorzystujepython
.Używam
runit
zsocklog
tego samego autora wewnątrz Alpine Linuxlxc
pojemników na około 10 miesięcy do zarządzaniaweb
/database
i 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 nieroot
jest miłe.voidlinux korzysta
runit
zinit
systemu, a także do nadzoru usług (w drzewie pakietów wyszukajrun
pliki, aby znaleźć przykładyrunit
skryptów).źródło
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.
źródło