upstart - 감독자 포크 수 > 2(부팅 시 감독자가 시작하도록 할 수 없음)

upstart - 감독자 포크 수 > 2(부팅 시 감독자가 시작하도록 할 수 없음)

부팅 시 Supervisord가 자동으로 시작되도록 upstart를 사용하려고 합니다. 내 상사는 가상 환경에 있습니다.

-n param을 사용하여 포그라운드 모드에서 실행되도록 구성했으며 수동으로 시작하면 작동하지만 부팅 시 시작을 거부합니다.

여기 가이드를 따라 http://upstart.ubuntu.com/cookbook/#how-to-found-fork-count

나는 감독자가 37번 포크를 한다는 것을 발견했습니다.

> ~/projects/bleh_app$ sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf &
[1] 5662

> ~/projects/bleh_app$ ps -ef | grep strace
root      5662  5447  0 21:02 pts/0    00:00:00 sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
root      5663  5662 36 21:02 pts/0    00:00:03 strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
bleh     5703  5447  0 21:02 pts/0    00:00:00 grep --color=auto strace

> ~/projects/bleh_app$ sudo killall -9 strace
[1]+  Exit 137                sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf

> ~/projects/bleh_app$ sudo egrep "\<(fork|clone)\>\(" /tmp/strace.log | wc | awk '{print $1}'
37

몇 가지 질문:
* 부팅 시 포그라운드 모드에서 시작되지 않는 이유에 대한 아이디어가 있습니까?
* 포크 수를 올바르게 결정하고 있습니까?
* Upstart로 감독을 시작하는 방법에 대한 더 나은 제안이 있습니까?

답변1

아 이런...
저는 여기서부터 이 길을 시작했습니다.
Linux(Ubuntu)에서 자동으로 감독자를 시작하는 방법
특히 이 답변 https://serverfault.com/a/115259/60345

"오 슈퍼바이저로서는 대단한 신생 기업입니다.... 문제가 없군요"

아니요. 문제 없이 감독자를 수동으로 시작할 수 있지만 부팅 시 자동으로 시작되도록 할 수는 없습니다. 디버깅은 Supervisord가 시작된 것처럼 보이지만 즉시 SIGTERM을 전송하여 자체 종료합니다. 포그라운드에서 실행되기 때문인지는 알 수 없습니다.
위의 질문은 원래 포크나 데몬을 사용하여 실행할 수 있는지 확인하기 위한 것이었습니다(이것은 전혀 파악하지 못했습니다).

내 인생에서 8시간 후에 이걸 찾았어
http://upstart.ubuntu.com/cookbook/#runlevels

기본적으로 시작 conf 파일이 다음과 같기를 원합니다.

description     "supervisord"

start on (filesystem and static-network-up)
stop on runlevel [!2345]

respawn

exec /<path to>/supervisord -n -c /<path to>/supervisord.conf

특히 참고할 사항:
런레벨에서 중지 [!2345]
vs
런레벨에서 중지 [!345]

이 답변을 다른 스레드에 게시하고 싶었지만 잠겨 있습니다 =(

관련 정보