uWSGI 와 nginx 를 사용 하여 연결 시간 초과 설정 방법

3220 단어
얼마 전에 django 프로젝트 를 만 들 었 습 니 다. 이전 프로젝트 는 배경 프로그램 이 었 기 때문에 데이터 베 이 스 는 뒤에 새로 추 가 된 전단 의 수 요 를 만족 시 키 지 못 했 기 때문에 무엇 을 표시 하 는 지 조회 하 는 것 이 매우 지루 하여 대량의 구 덩이 를 만 들 었 습 니 다.오늘 은 구 덩이 를 기어 오 르 는 과정 을 나눈다.
1. 수요 부터 살 펴 본다.
항목 은 보고서 에 목록 을 표시 해 야 합 니 다. 이 목록 은 보고서 에 포 함 된 모든 작업 파일 을 포함 합 니 다.문제 가 발생 한 이 보고서 에는 약 200 개의 파일 이 포함 되 어 있 으 며, 각 파일 의 크기 차 이 는 1.5M 정도 가 많 지 않다.파일 마다 요청 을 보 낼 때 두 개의 인 자 를 포함 합 니 다. 하 나 는 파일 이름 이 고 다른 하 나 는 파일 생 성 시간 입 니 다.기본 적 인 수 요 는 바로 이 렇 습 니 다. 결국 전단 은 한 바퀴 돌 고 500, WTF 로 성공 적 으로 돌 아 왔 습 니 다.
질문
nginx 로그 (nginx 로그 의 기본 경로 \var\log
ginx\error.log
를 엽 니 다. 출력 은 다음 줄 입 니 다. *42 upstream time out(110: Connection timed out) while reading response header from upstream... 로 그 는 연결 시간 이 초과 되 었 습 니 다.그래서 인터넷 으로 이 문 제 를 어떻게 해결 할 것 인 가 를 조회 하기 로 했다.nginx 공식 nginx 가 제시 한 문 서 를 통 해 문제점 을 발견 하 였 습 니 다.공식 문서 에서 다음 과 같이 지적 되 었 습 니 다.
Syntax: uwsgi_connect_timeout time; Default: uwsgi_connect_timeout 60s; Context: http, server, location Defines a timeout for establishing a connection with a uwsgi server. It should be noted that this timeout cannot usually exceed 75 seconds.
ok, nginx 의 기본 설정 시간 은 60s 입 니 다. 링크 시간 이 이것 을 초과 하면 구체 적 인 시간 을 알려 야 합 니 다.여기 서 정 부 는 75s 를 넘 지 않 는 것 이 좋 겠 다 고 말 했다. 구체 적 으로 실현 되 는 수준 이 이 범위 내 에서 통 제 될 수 있 는 지 에 달 려 있다.나 는 이곳 에서 구 덩이 를 기어 다 니 며 코드 를 최적화 하고 싶 지 않 기 때문에 600 s 를 설치 하면 충분 하 다.
3 어떻게 수정
nginx 프로필 을 수정 합 니 다. 제 사례 는 다음 과 같 습 니 다.
# interface.conf

# configuration of the server
server {
    # the port your site will be served on
    listen 8099;
    # the domain name it will serve for
    server_name 127.0.0.1;  # substitute your machine's IP address or FQDN
    charset utf-8;

    # max upload size
    client_max_body_size 75M; # adjust to taste

    # Django media
    location /media  {
        alias /home/jason/code/interface/media;  # your Django project's media files - amend as required
    }

    location /static {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /home/jason/code/interface/static;   # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        #     ,         
        uwsgi_send_timeout 600;        #    uWSGI         ,      uWSGI         。
        uwsgi_connect_timeout 600;   #        uWSGI     。
        uwsgi_read_timeout 600;        #     uWSGI       ,       uWSGI       。
        uwsgi_pass  127.0.0.1:8000;
        include /home/jason/code/interface/conf/uwsgi_params;       # the uwsgi_params file you installed
    }
}

설명
만약 당신 이 사용 한 것 이 uwsgi 가 아니라면 주의해 야 합 니 다. nginx 에서 해당 하 는 nginx 모듈 을 찾 아 소개 해 야 합 니 다.예 를 들 어 nginx 를 역방향 에이전트 로 사용 하면 수 정 된 이 시간 은 다음 과 같이 조정 해 야 합 니 다.
        #     ,         
        proxy_send_timeout 600;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;

예 를 들 어 fastcgi 를 사용 하면 이 시간 을 다음 과 같이 조정 해 야 합 니 다.
        #     ,         
        fastcgi_send_timeout 600;
        fastcgi_connect_timeout 600;
        fastcgi_read_timeout 600;

이런 식 으로 유추 하 다.

좋은 웹페이지 즐겨찾기