프로세스가 항상 실행 중인지 확인


23

Cherokee를 사용하여 잠시 동안 사이트를 호스팅하기 시작했습니다. 외부 소스 (FastCGI 등)의 경우 지정된 소켓 또는 포트에서 실행중인 프로세스를 찾을 수없는 경우 프로세스를 시작하는 옵션이 있습니다. PHP 또는 Django 사이트가 (때때로) 넘어지면 자동으로 다시 시작한다는 것을 의미하기 때문에 이것은 훌륭합니다.

PHP-FPM을 사용하는 새로운 서버에서 Cherokee를 사용할 수 없었습니다 (PHP에 버그가 있음) .NGNGX로 옮겼습니다. NGINX (구성 스타일)가 정말 마음에 들지만 프로세스가 넘어지고 다시 생성되지 않는 심각한 문제가 있습니다. PHP는 때때로 이것을하지만 Django 사이트는 더 문제가됩니다. 나는 그들을 위해 init 스크립트를 만들었고 부팅 할 때 나타나지만 재부팅 사이에 충돌하면 도움이되지 않습니다.

FastCGI 프록시를 찾고 있다고 생각합니다. Cherokee와 같이 어떤 소켓 / 포트에서 어떤 프로세스를 실행해야하는지 알고 필요할 때 다시 생성합니다. 그런 것이 있습니까? 이것을 NGINX에 빌드하는 방법이 있습니까?

답변:


13

daemontools 및 특히 ​​supervise 도구 는 어떻 습니까?

감독은 서비스를 모니터링합니다. 서비스를 시작하고 서비스가 종료되면 다시 시작합니다. 새로운 서비스 설정은 쉽습니다. 모든 감독 요구는 서비스를 실행하는 실행 스크립트가있는 디렉토리입니다.


daemontools의 경우 +1 그러나 종종 스크립트 /etc/init.d/apachectl를 그 안에 넣을 수는 없습니다 . 사용할 간단한 시작 스크립트를 자주 다시 작성해야합니다 exec. daemontools를 사용하여 몇 가지 예를 더보고 싶습니다.
Stefan Lasiewski

daemontools에는 runit으로 다른 화신이 있습니다. daemontools가 공개 도메인이라는 점은 중요하지 않지만 오래된 배포판에는 runit 만있을 수 있습니다.
camh


5

나는 daemontools제안을 두 번째로 생각하지만 DJB의 소프트웨어 작동 방식이 마음에 들지 않는다면 (이유가 무엇이든) supervisord.

나는 이전에 FreeBSD 이미지를 설정했고, supervisord관리 하는 데 사용 nginx했으며 gunicorn, 간단한 WSGI 앱을 호스팅하는 데 사용했으며 전체 프로세스는 매우 간단했습니다.

Django에서이 작업을 수행하는 경우 Gunicorn은 Django 앱을 btw로 배포하는 것이 매우 간단합니다. 자세한 내용은 이 블로그 게시물 을 참조하십시오.


4

또 다른 옵션은 monit 을 사용하는 것일 수 있습니다. monit 은 내가 일반적으로 사용하는 것입니다.


3

당신은 고려 했습니까 god?

하나님은 루비로 작성된 모니터링 프레임 워크를 쉽게 구성하고 확장 할 수 있습니다.

서버 프로세스와 작업을 계속 실행하는 것은 배포 프로세스의 간단한 부분이어야합니다. 하나님은 사용 가능한 가장 단순하고 가장 강력한 모니터링 응용 프로그램을 목표로합니다.

Rails / nginx 인스턴스가 넘어지면 복구되고, 올바른 포트를 사용하고 있는지 확인하는 기본 지원이 보이지 않지만 문제가 프로세스가 실패하거나 더 이상 실행되지 않습니다 god.에 잘못 갈 수 없습니다 .



0

해킹 솔루션은 cron프로세스가 다운 된 경우 detecs 하는 스크립트를 통해 (정기적으로 ) 스크립트를 시작 하고이 경우 다시 시작하는 것입니다.


0

실패한 데몬을 다시 시작하는 방법은 여러 가지가 있으며 일반적인 권장 사항은 "inittab에서 다시 생성"이지만 시스템이 실제로 고정 된 경우 제한을 고려해야합니다.

워치 독 데몬은 PID 파일을 통해 프로세스를 모니터링 할 수도 있습니다. 그러나 이는 제대로 실행하기에 너무 아프거나 (예 : 메모리 부족, 포크 폭격 등) 머신을 재부팅하기위한 2 차 방어선으로 간주되어야하며 기본 방법이나 데몬을 모니터링 및 재시작하지 않아야합니다.

마지막으로 관리자에게 전역보기를 제공하기 위해 nagios를 사용하여 복잡한 시스템을 모니터링하는 것을 고려할 수 있습니다. 플러그인을 실행하여 외부에서 데몬의 작동을 조사 할 수 있습니다. 이는 단순히 PID가 작동하는 기능에 대한보다 완전한 테스트입니다.


-1

간단한 대답-시작, 어딘가에 pid를 작성하고 x 시간 (초, 분, 내기)마다 프로세스가 완료되었는지 확인하십시오.

긴 대답-위의 모든 방법이 좋습니다. 그러나 다소 복잡합니다.

또한 살아 있고 요청에 응답하는 것은 다르다는 것을 명심하십시오.


1
… 손가락을 엇갈리게하여 PID 파일을 낙서하거나 지우거나 다른 데몬에 재사용하거나 검사에 잘 반응하지 않는 다른 무고하고 관련없는 프로세스에서 다시 지적하기를 바랍니다. 일어나서. ☺ 그렇기 때문에 데몬을 자식 프로세스로 실행하고 일반적인 Unix / Linux 시스템 메커니즘으로 데몬을 모니터링하는 적절한 데몬 감독자의 긴 대답이 오랫동안 받아 들여진 더 좋은 방법입니다.
JdeBP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.