Django 기반 애플리케이션을위한 통합 서버를 구성했습니다. 일부 기능은 아직 실험 중이므로 요청이 너무 길어집니다.
현재로서는 성능이 좋지 않지만 통합 할 수 있어야합니다. 긴 요청으로 이어지는 기능을 사용할 때마다 앱이 예상대로 정지 된 다음 1 분 반 후에 ‘502-Bad Gateway’가 반환됩니다. 나머지 응용 프로그램은 정상적으로 작동합니다.
나는 gunicorn 로그를 확인했으며, 이것이 일어날 때마다 다음과 같은 줄을 얻습니다.
2012-01-20 17:30:13 [23128] [DEBUG] GET /results/
2012-01-20 17:30:43 [23125] [ERROR] WORKER TIMEOUT (pid:23128)
Traceback (most recent call last):
File "/home/demo/python_envs/frontend/lib/python2.6/site-packages/gunicorn/app/base.py", line 111, in run
os.setpgrp()
OSError: [Errno 1] Operation not permitted
그러나 이것은 실제 작업자 시간 초과 이전에 발생하며 확인을 위해 10 분으로 설정했습니다. 다음은 gunicorn을 실행하는 upstart 스크립트의 일부입니다.
description "..."
start on runlevel [2345]
stop on runlevel [!2345]
#Send KILL after 5 seconds
kill timeout 5
respawn
env VENV="/path/to/a/virtual/env/"
#how to know the pid
pid file $VENV/run/guniconr-8080.pid
script
exec sudo -u demo $VENV/bin/gunicorn_django --preload --daemon -w 4 -t 600 --log-level debug --log-file $VENV/run/gunicorn-8080.log -p $VENV/run/gunicorn-8080.pid -b localhost:8080 /path/to/settings.py
end script
gunicorn 버전 0.13.4를 실행 중입니다. 도움을 주시면 감사하겠습니다.
답변
502 Bad Gateway
귀하의 gunicorn 일꾼이 시간 초과되었음을 의미합니다. 명령 에 --timeout
옵션을 추가 할 수 있습니다 gnuicorn
. 기본값은 30입니다.
@ greg-k가 지적한 것처럼 proxy_read_timeout
Nginx의 옵션은 또 다른 시간 초과를 제어합니다. 당신이 볼 경우 504 Gateway Timeout
오류가이 옵션을 조정할 수 있습니다.
답변
이것은 아마도 nginx 구성에 문제가있을 수 있습니다. proxy_read_timeout 값을 구성 했습니까?
이 지정 문은 프록시 서버의 응답에 대한 읽기 제한 시간을 설정합니다. nginx가 요청에 대한 응답을 기다리는 시간을 결정합니다. 시간 초과는 전체 응답이 아니라 두 번의 읽기 작업 사이에서만 설정됩니다.
출처 : http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout