프로세스가 종료된 경우 다시 시작하기 위해 upstart, runit, supervisor, daemontools 등 중에서 어떻게 선택합니까? (공정 감독/모니터링)

프로세스가 종료된 경우 다시 시작하기 위해 upstart, runit, supervisor, daemontools 등 중에서 어떻게 선택합니까? (공정 감독/모니터링)

Nginx 웹 프록시, gunicorn 웹 서버 및 Python/flask 웹 앱이 있습니다. Gunicorn 프로세스는 명백히 종료되었으며 앞으로 다시 충돌이 발생할 경우 gunicorn 프로세스를 모니터링하고 다시 시작할 수 있는 유틸리티를 조사하여 이를 개선하고 싶습니다.

작업을 수행할 수 있는 여러 프로세스 감독 유틸리티를 찾았습니다.

  • 데몬툴즈
  • 출시됨
  • 런잇
  • s6
  • 감독자
  • 시스템D
  • 갑자기 나타나다
  • ...

프로세스를 모니터링하고 다시 시작하는 데 사용되는 다양한 유틸리티를 비교하고 대조하는 포괄적인 기사가 있습니까?

https://en.wikipedia.org/wiki/Process_supervision

답변1

  • runit의 후속 제품입니다 daemontools(둘 다 로 작성됨 c).

  • supervisord을 사용합니다 python.

나는 같은 저자의 내부를 runit사용 하고 있습니다socklog알파인 리눅스 lxc약 10개월 동안 컨테이너를 사용하여 기타 다양한 서비스를 관리 web합니다 database. 가볍고 관리하기 쉬우며 서비스 장애가 발생하지 않았습니다. 로깅 데몬은 자체 사용자로 실행되지만 root이는 좋지 않습니다.

무효리눅스runit시스템 으로 사용되며 init다음 용도로도 사용됩니다.서비스 감독run(스크립트 예제를 보려면 패키지 트리에서 파일을 검색하세요 runit.)

답변2

배포판에서 Upstart를 사용하는 경우 이를 사용하세요. 작업 다시 시작에 대한 매우 기본적인 지원이 있지만 @EEAA에서 언급한 대로 다시 시작 루프를 방지할 수 있는 제한이 포함되어 있습니다.

OS가 다른 초기화 프로그램을 사용하는 경우 이를 변경하지 마십시오. 나는 일반적으로 Upstart가 아직 존재하는 Ubuntu(최신 LTS 기준)를 사용하기 때문에 당신이 언급한 다른 도구에 대해 실제로 도움을 줄 수 없으므로 그들과 거의 관련이 없습니다. 하지만 다음에서 실행되는 간단한 스크립트를 만드는 것은 어려운 작업이 아닙니다.크론1분에 한 번(또는 루프에서 더 자주) PID가 존재하는지 확인하고 실패 시 다시 시작을 실행할 수 있습니다.

관련 정보