감독자 프로세스는 '종료 상태 1; 예상치 못한'

감독자 프로세스는 '종료 상태 1; 예상치 못한'

감독자에서 gunicorn_django 프로세스를 실행하려고 하는데 항상 즉시 종료되고 다음 오류가 발생합니다.

INFO exited: my_app (exit status 1; not expected)
INFO received SIGCLD indicating a child quit
INFO gave up: my_app entered FATAL state, too many start retries too quickly

내 서버 스크립트는 다음과 같습니다.

#!/bin/bash
set -e
LOGFILE=/var/log/gunicorn/my_app.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3
USER=my-www-user
GROUP=my-www-user
cd /home/my-www-user/my_app
source /home/my-www-user/.virtualenvs/my_app/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
gunicorn_django -w $NUM_WORKERS --debug \
 --user=$USER --group=$GROUP \
 --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE\
 --pythonpath=my_app --settings=settings.active \
 my_app.wsgi:application

내 감독자 구성은 다음과 같습니다.

[program:my_app]
directory=/home/my-www-user/my_app/
user=my-www-user
command=/home/my-www-user/my_app/server.sh
stdout_logfile=/var/log/supervisor/my_app.log
stderr_logfile=/var/log/supervisor/my_app-error.log
autostart=true
autorestart=true

su계정에 들어가면 서버 my-www-user가 정상적으로 시작됩니다. 그렇게 하면 sudo supervisorctl start my_appCTRL-c를 실행할 때까지 단순히 정지되고, Supervisord.log 파일에서 위의 오류를 발견합니다.

내가 놓친 것에 대한 단서가 있는 사람이 있나요?

답변1

해결책을 찾은 것 같습니다. my-www-user더 많은 액세스가 필요한 로그 파일 등에 써야 하기 때문에 감독자가 내 서버 스크립트를 권한 없는 사용자로 실행하도록 할 수 없습니다 . 따라서 해결책은 서버를 루트로 실행하고 gunicorn_django가 작업자 프로세스를 다음과 같이 생성하도록 하는 것입니다.my-www-user

[program:my_app]
user=root
; rest of config follows

답변2

‍ 를 실행하려고 할 때 이 오류가 발생 Celery했고 정반대의 문제가 발생했습니다.

사용자를 에서 로 변경했더니 root문제 www-data가 해결되었습니다.

답변3

내 경우에는 동일한 오류가 발생하여 다음을 발견할 때까지 디버깅했습니다.

디스크가 꽉 찼어요이 문제를 해결하기 위해 디스크 공간을 늘렸습니다.

(어리석은 오류, 쉬운 수정 - 여기에서 이 내용을 읽으면 시간을 낭비하지 않는 데 도움이 될 수 있습니다)

또한 다른 옵션에 대해 이 질문을 연결합니다.

관련 정보