gunicorn + 토네이도 4 앱으로 새 유물을 구성하려고합니다.토네이도 4 및 Gunicorn으로 새 유물을 설정할 때 작업자 시간 초과
로컬에서는 gunicorn이없고 (단순히 WSGI 서버로 토네이도가 사용됨) 새 유적 설정이 작동하며 새 유적에서 데이터를 볼 수 있습니다. gunicorn와 함께, 내가 무기한 노동자 타임 아웃 얻을, 생산, 그러나
config_file = os.environ.get('NEW_RELIC_CONFIG_FILE', None)
if config_file:
import newrelic.agent
environment = 'production' if IS_PROD else 'development'
newrelic.agent.initialize(config_file, environment=environment)
: 나는 새로운 유물 에이전트를 구성하려면 다음 코드를 사용하고 ...
gunicorn -b 0.0.0.0:8080 -w 3 -p gunicorn.pid -k tornado --access-logfile /var/log/gunicorn_access.log --error-logfile /var/log/gunicorn_error.log myapp.server:make_application\(\) -t 2 --log-level DEBUG --capture-output &> /dev/null &
을
[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26985)
[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26986)
[2017-01-17 05:16:37 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26987)
[2017-01-17 05:16:37 +0000] [26991] [INFO] Booting worker with pid: 26991
[2017-01-17 05:16:37 +0000] [26992] [INFO] Booting worker with pid: 26992
[2017-01-17 05:16:37 +0000] [26993] [INFO] Booting worker with pid: 26993
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26992)
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26993)
[2017-01-17 05:16:40 +0000] [26957] [CRITICAL] WORKER TIMEOUT (pid:26991)
[2017-01-17 05:16:40 +0000] [26997] [INFO] Booting worker with pid: 26997
[2017-01-17 05:16:40 +0000] [26998] [INFO] Booting worker with pid: 26998
[2017-01-17 05:16:40 +0000] [26999] [INFO] Booting worker with pid: 26999
위의 에이전트 코드를 주석 처리하고 gunicorn 명령을 실행하면 작업자가 안정적으로 시간 초과되지 않습니다.
로그 수준을 DEBUG로 설정 했음에도 불구하고 gunicorn 작업자가 시간 초과되어 무기한으로 재부팅되는 이유의 근본 원인을 찾을 수 없습니다. 위의 새로운 유적 에이전트 코드가 범인이라는 것만 알면됩니다.
로컬에서 New Relic과 성공적으로 통합 할 수 있기 때문에 newrelic.ini와 위의 새로운 유적 에이전트 코드가 괜찮다고 생각합니다. Gunicorn이 어떻게 든 엉망으로 만들었지 만 문제 해결을 시작해야하는 방법이나 위치가 확실합니다.
내가 사용하고 있습니다 :
newrelic==2.78.0.57
gunicorn==19.6.0
tornado==4.4