Eu tenho um proxy da web Nginx, um servidor da web gunicorn e um aplicativo da web python / balão. O processo Gunicorn aparentemente morreu, e eu quero melhorar isso no futuro, procurando em um utilitário que possa monitorar e reiniciar o processo Gunicorn no caso de ele travar novamente.
Eu encontrei vários que podem fazer o trabalho:
- subir na vida
- executá-lo
- Supervisor
- Daemon Tools
- muito mais
Existe um artigo abrangente que compara e contrasta os vários utilitários usados para monitorar e reiniciar um processo?
upstart
supervisord
daemontools
runit
Matthew Moisen
fonte
fonte
Respostas:
runit
é um sucessor dedaemontools
(ambos estão escritos emc
)supervisord
usospython
.Eu tenho usado
runit
comsocklog
pelo mesmo autor dentro Alpine Linuxlxc
recipientes para cerca de 10 meses para gerenciarweb
/database
& vários outros serviços. É leve, fácil de gerenciar e não tive falhas no serviço. O daemon de log também é executado como seu próprio usuário e não oroot
que é bom.O voidlinux usa
runit
comoinit
sistema e também para supervisão de serviço (pesquise na árvore de pacotesrun
arquivos para exemplos derunit
scripts).fonte
Se a sua distribuição usar o Upstart, vá com ela. Ele possui suporte muito básico para a reinicialização do trabalho, mas inclui limites que podem impedir o loop de reinicialização, conforme mencionado pelo @EEAA.
Se o seu sistema operacional usa outro programa init, não o altere. Eu realmente não posso ajudá-lo com as outras ferramentas que você mencionou, como geralmente uso o Ubuntu onde o Upstart ainda está presente (a partir do LTS mais recente), então tenho pouco a ver com elas. Mas não é uma tarefa difícil criar um script simples que seja executado a partir do cron uma vez por minuto (ou mais frequentemente em um loop), que pode verificar se existe um PID e emitir uma reinicialização em caso de falha.
fonte