IT TIP

Gunicorn Nginx 시간 초과 문제

itqueen 2020. 12. 10. 21:35
반응형

Gunicorn Nginx 시간 초과 문제


gunicorn + nginx에서 django를 실행하고 있습니다. 파일 업로드에 문제가 있습니다. 실제로 업로드는 정상적으로 작동하지만 gunicorn 시간이 초과되어 nginx에서이 문제가 발생합니다.

2011/07/25 12:13:47 [error] 15169#0: *2317 upstream timed out (110: Connection timed out) while reading response header from upstream, client: IP-ADDRESS, server: SERVER, request: "GET /photos/events/event/25 HTTP/1.1", upstream: "http://127.0.0.1:29000/photos/events/event/25", host: "HOST", referrer: "REFERER_ADDRESS"

페이지를 새로 고침하면 모든 사진이 정상적으로 업로드되는 것을 볼 수 있습니다. 문제는 시간 초과가 발생하여 업로드가 작동하지 않는다는 인상을 준다는 것입니다.

여기 내 gunicorn conf입니다.

bind = "127.0.0.1:29000"
logfile = "/path/to/logs/gunicorn.log"
workers = 3

시간 제한을 변경하려고했지만 작동하지 않았습니다.


다음을 추가하여 Nginx에서 프록시 패스의 제한 시간을 업그레이드 할 수 있습니다.

proxy_connect_timeout 75s;
proxy_read_timeout 300s;

nginx에서 제공하는 모든 사이트에서 시간 제한을 늘리려면 / var / nginx / sites-available / [site-config] 또는 /var/nginx/nginx.conf에 있습니다.

--timeout 300gunicorn 프로세스 / 구성에도 추가해야합니다 .

이것은 더 큰 업로드로 과거의 문제를 해결했습니다.


이것은 nginx 시간 초과가 아니지만 아마도 Gunicorn 시간 초과입니다. Gunicorn의 기본값은 30 초입니다.

일반적으로 반환하는 데 30 초 이상 걸리는 엔드 포인트를 사용하지 않음으로써이 문제를 해결해야하지만, 거의 사용되지 않는 엔드 포인트 인 경우 gunicorn 시간 제한을 늘릴 수도 있습니다.

이렇게하면 gunicorn 작업자 프로세스 수도 늘려야합니다.

gunicorn의 시간 제한과 작업자를 늘리려면 시작시 다음 명령 줄 옵션을 추가 할 수 있습니다.

gunicorn --timeout 120 --workers <NUMBER OF WORKER YOU WANT>

Django + nginx + gunicorn을 사용하여 동일한 문제가 발생했습니다. Gunicorn 문서에서 거의 차이가없는 graceful-timeout을 구성했습니다.

몇 가지 테스트 후 솔루션을 찾았습니다. 구성 할 매개 변수는 다음과 같습니다. timeout (그리고 graceful timeout이 아님). 시계처럼 작동합니다 ..

따라서 다음을 수행하십시오.

1) gunicorn 구성 파일 열기

2) TIMEOUT을 필요한 값으로 설정합니다. 값은 초 단위입니다.

NUM_WORKERS=3
TIMEOUT=120

exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--timeout $TIMEOUT \
--log-level=debug \
--bind=127.0.0.1:9000 \
--pid=$PIDFILE

이것은 비슷한 문제를 가진 사람을 도울 수 있습니다.

Django 응용 프로그램의 nginx 및 gunicorn에서 시간 초과 오류가 발생했습니다. nginx에서 시간 초과 오류가 발생했기 때문에 Django에서 실제 오류를 볼 수 없었습니다. fijter가 제안한 것과 같은 새 시간 제한을 추가 한 후. 오류가 settings.py 파일에 있음을 알 수 있습니다.

DEBUG를 False로 설정하고 ALLOWED_HOSTS에 도메인 이름을 추가하지 않은 경우이 오류가 발생할 수 있습니다.

settings.py의 ALLOWED_HOSTS에 도메인을 추가했는데 오류가 사라졌습니다.

아주 간단한 해결책!

참고 URL : https://stackoverflow.com/questions/6816215/gunicorn-nginx-timeout-problem

반응형