nginx와 gunicorn을 사용하여 두 대의 서버에서 웹 사이트를 호스팅했습니다.
두 서버 모두 동일한 버전의 패키지가 있으며 웹 사이트가 성공적으로 호스팅됩니다.
그러나 내 서버 중 하나에서 gunicorn은 항상 시간 초과되고 오류가 발생합니다.
[CRITICAL]Worker Timeout
Booting worker with pid
Worker cannot boot with pid
그리고이 후에 웹 페이지에 502 Badgateway 오류가 발생합니다. 웹 사이트를 열려면 gunicorn 프로세스를 다시 시작해야합니다.
다음은 오류 로그입니다.
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994)
2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140
그리고 나는 이와 같은 연속 오류를 얻습니다.
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE
Ignoring EPIPE
그리고 노동자는 다시 시작합니다
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993)
2014-02-16 14:32:44 [22276] [INFO] Booting worker with pid: 22276
다시 EPIPE 오류를 무시하면 gunicorn을 다시 시작할 때까지 계속됩니다. 그리고이 오류가 발생하면 nginx에서 504 게이트웨이 오류가 발생합니다.
답변
이 문제를 해결하려면 Nginx에서 시간 초과 플래그를 늘리십시오.
Nginx 증가 proxy_connect_timeout
및 proxy_read_timeout
에서 http
지시문 아래 nginx.conf 파일에 다음을 추가 할 수 있습니다 . 기본값은 60입니다.
proxy_connect_timeout 300;
proxy_read_timeout 300;
Nginx 서버를 다시 시작하십시오. 시간 초과에 대한 nginx 문서를 참조하십시오 .
위의 수정이 작동하지 않으면 Gunicorn 구성에서 Gunicorn 시간 초과 플래그를 늘리십시오. 기본 Gunicorn 시간 초과는 30 초입니다.
-타임 아웃 90
시간 초과에 대한 Gunicorn 설명서
-t INT, –timeout INT 30이 초 이상 침묵 한 작업자는 종료되었다가 다시 시작됩니다.
일반적으로 30 초로 설정됩니다. 동기화 워커에 대한 영향을 확신하는 경우에만이 값을 눈에 띄게 높게 설정하십시오. 비 동시 작업자의 경우 작업자 프로세스가 여전히 통신 중이며 단일 요청을 처리하는 데 필요한 시간과 관련이 없음을 의미합니다.
이것이 해결되기를 바랍니다.