개발자
안녕하세요, 현재 프로그래밍을 공부하고 있는 학생입니다. 공부를 하던 중 django를 사용해 프로젝트를 진행했고 aws, nginx, uwsgi 로 배포를 진행하게 되었는데, 배포는 성공적으로 됐지만 처리해야할 데이터가 많은 기능을 사용하면 자꾸 아래 오류가 뜨더군요. (퍼블릭 ip 주소는 X로 가렸습니다) 2023/11/07 15:14:13 [error] 7487#7487: *1 upstream timed out (110: Unknown error) while reading response header from upstream, client: xx.xxx.xxx.xxx, server: _, request: "POST /file_upload/upload/ HTTP/1.1", upstream: "uwsgi://unix:/home/ubuntu/docusift/uwsgi.sock", host: "xx.xxx.xxx.xx", referrer: "http://xx.xxx.xxx.xx/success_with_token/WeDkQYs84hDYcDsl/" 구글링을 해봐도, 스택오버플로우를 찾아봐도 110 오류가 unknown error로 뜨는 것에 대한 해결책은 나오지 않아서 이렇게 여쭤보게 되었습니다. 다만 구글링을 해본 결과 설정을 따로 만져줘야 한다는 것을 봐서 설정은 아래처럼 해놓은 상태인데, 아직 해결은 되지 않은 상황입니다. [uwsgi] chdir=/home/ubuntu/docusift/blog module=blog.wsgi:application master=True pidfile=/tmp/project-master.pid vacuum=True max-requests=5000 daemonize=/home/ubuntu/docusift/debug_uwsgi.log home=/home/ubuntu/docusift/venv virtualenv=/home/ubuntu/docusift/venv socket=/home/ubuntu/docusift/uwsgi.sock chmod-socket=666 socket-timeout=600 harakiri = 300 http-timeout = 300 server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { include /etc/nginx/uwsgi_params; uwsgi_pass django; proxy_buffer_size 512k; proxy_buffers 16 512k; proxy_busy_buffers_size 1024k; proxy_connect_timeout 500s; proxy_send_timeout 500s; proxy_read_timeout 500s; send_timeout 500s; } location /static/ { alias /home/ubuntu/docusift/blog/staticfiles/; } http { upstream django { server unix:/home/ubuntu/docusift/uwsgi.sock; } client_max_body_size 100M; proxy_connect_timeout 800s; proxy_send_timeout 800s; proxy_read_timeout 3600; 혹시라도 해결 방법을 아시는 분들 답변 주시면 정말 감사하겠습니다!!!
답변 1
저 같은 경우 업스트림 저거를 nginx.conf에다가 넣어서 쓰거든요 언어는 php 로 했었는데 php 소켓이 문제 있으면 그런 에러가 나와요 데몬이 꺼졌던지 포트번호가 잘못됐던지... 파이썬도 비슷한 문제 같아 보여요
고건
작성자
연세대학교 체육교육학과 • 2023년 11월 07일
음.. 더 찾아보니 아예 지금 에러가 나는 프로세스 자체의 시간을 줄이는 방법도 있다네요 ㅠㅠㅠ 답변 정말 정말 감사합니다!! 한번 시도해보겠습니다 :)
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 11월 07일
우선, 이 `upstream timed out (110: Unknown error)` 오류는 nginx가 요청을 처리하는 데 너무 오래 걸려 timeout이 발생한 것을 나타냅니다. 이 시간 초과는 UWSGI에서 가장 간단하게 해결할 수 있는데, 가장 먼저 확인해야 할 설정은 `harakiri = 300` 입니다. 이 설정은 uWSGI 워커가 한 요청에 대해 처리하는 최대 시간을 의미합니다. 이미 설정된 값이 상당히 긴 편입니다(5분)만, 만약 요청 처리에 아직도 더 많은 시간이 필요하다면 해당 값을 조정해보세요. 다음으로 확인해 볼 수 있는 것은 Nginx의 proxy_send_timeout과 proxy_read_timeout 값입니다. 현재 이 값들은 각각 500초로 설정되어 있습니다만, 만약 이 보다 긴 시간 동안 데이터를 전송하거나 응답을 기다리는 경우라면 이 값들 역시 조정해볼 수 있습니다. 그러나 위의 방법들 모두 '시간' 문제를 해결하는 것일 뿐, 이런 종류의 문제가 발생하지 않도록 할 순 없습니다. 그래서 실제 해결책으로 가장 좋은 방법은 워크로드 자체를 개선하는 것입니다. 즉, 긴 처리 과정을 짧게 만들거나, 더 효율적인 방법으로 데이터를 처리하거나, 가능하다면 처리 과정을 분할해서 여러 번에 나눠서 진행하는 것입니다. 이렇게 하면 한 번에 처리하는 부담을 줄일 수 있으며 시간 초과 문제도 해결할 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!