nginx 버퍼 최적화

3327 단어
버퍼 에 대해 서 는 주로 버퍼 크기 를 합 리 적 으로 설정 하여 하 드 디스크 에 버퍼 링 되 는 상황 을 피 합 니 다.
proxy_buffering
proxy_buffering 이 매개 변 수 는 백 엔 드 응답 내용 의 버퍼 를 열 지 여 부 를 제어 하 는 데 사 용 됩 니 다. 이것 이 off 로 설정 되면 proxybuffers 와 proxybusy_buffers_size 이 두 명령 은 효력 을 잃 을 것 이다.하지만 프 록 시buffering 오픈 여부, proxybuffer_size 는 모두 유효 합 니 다.
proxy_buffering 이 열 리 면 Nignx 는 백 엔 드 가 되 돌아 오 는 내용 을 버퍼 에 넣 은 다음 클 라 이언 트 에 게 되 돌려 줍 니 다.임시 파일 은 proxymax_temp_file_size 와 proxytemp_file_write_size 라 는 두 명령 이 결 정 했 습 니 다.
하면, 만약, 만약...buffering 이 닫 히 면 nginx 는 백 엔 드 에서 받 은 응답 내용 을 클 라 이언 트 에 즉시 전송 합 니 다. 매번 받 는 크기 는 proxy 입 니 다.buffer_size 의 크기, 이렇게 하면 효율 이 틀림없이 비교적 낮 을 것 이다.
주: proxybuffering 을 사용 할 때 사용 할 프 록 시 버퍼 가 너무 큽 니 다.이것 은 에이전트 가 지원 할 수 있 는 최대 병렬 연결 수 를 제한 하 는 메모 리 를 먹 어 버 릴 수 있 습 니 다.
proxy_buffer_size
백 엔 드 서버 의 해당 헤드 는 proxybuffer_size 에서 이 크기 는 기본적으로 proxy 와 같 습 니 다.buffers 의 단일 버퍼 크기 를 설정 합 니 다.proxy_buffer_size 는 응답 헤드 의 버퍼 일 뿐 너무 크게 설정 할 필요 가 없습니다.proxy_buffer_size 는 따로 설정 하 는 것 이 좋 습 니 다. 보통 4k 만 설정 하면 됩 니 다.
proxy_buffers
proxy_buffers 의 버퍼 크기 는 일반적으로 큰 웹 페이지 에 대비 하여 비교적 크게 설정 합 니 다.proxy_buffers 에서 단일 버퍼 의 크기 는 시스템 의 메모리 페이지 크기 에 의 해 결정 되 며, Linux 시스템 에 서 는 일반적으로 4k 입 니 다.proxy_buffers 는 버퍼 의 수량 과 버퍼 크기 로 구성 되 어 있 습 니 다.총 크기 는 number * size 입 니 다.
어떤 요청 의 응답 이 너무 크 면 를 초과 합 니 다.buffers 부분 은 하 드 디스크 에 버퍼 링 됩 니 다. (버퍼 디 렉 터 리 는 temp path 명령 으로 지정) 물론 읽 기 응답 속도 가 느 려 지고 사용자 체험 에 영향 을 줄 수 있 습 니 다. proxy 를 사용 할 수 있 습 니 다.max_temp_file_size 명령 으로 디스크 버퍼 를 닫 습 니 다.
proxy_busy_buffers_size
proxy_busy_buffers_size 는 독립 된 공간 이 아니 라 proxybuffers 와 proxybuffer_사이즈 의 일부분.nginx 는 백 엔 드 응답 을 완전히 읽 지 못 했 을 때 클 라 이언 트 에 데 이 터 를 전송 하기 시작 합 니 다. 따라서 일부 버퍼 를 그 려 서 클 라 이언 트 에 데 이 터 를 전송 합 니 다. (이 부분의 크기 는 proxy busy buffers size 에 의 해 제 어 됩 니 다. proxy buffers 의 단일 버퍼 크기 의 2 배 를 권장 합 니 다) 그리고 백 엔 드 에서 데 이 터 를 계속 가 져 옵 니 다.버퍼 가 가득 차 면 디스크 의 임시 파일 에 기록 합 니 다.
proxy_max_temp_file_size 와 proxytemp_file_write_size
임시 파일 은 proxymax_temp_file_size 와 proxytemp_file_write_size 두 명령 결정.proxy_temp_file_write_size 는 쓰기 위 한 임시 파일 에 접근 하 는 크기 입 니 다. 기본 값 은 proxy 입 니 다.buffer_size 와 proxybuffers 에 설 치 된 버퍼 크기 의 2 배, Linux 에 서 는 보통 8k 입 니 다.
proxy_max_temp_file_size 응답 내용 이 proxy 보다 클 때 지정버퍼 가 지정 한 버퍼 를 사용 할 때 하드디스크 에 쓸 임시 파일 의 크기 입 니 다. 이 값 을 초과 하면, Nginx 는 프 록 시 서버 와 동기 화 된 내용 을 전달 하 며, 하드디스크 에 버퍼 링 되 지 않 습 니 다. 0 으로 설정 하면 하 드 디스크 버퍼 를 직접 닫 습 니 다.
설정 예제
  • 유 니 버 설 사이트 의 설정
  • proxy_buffer_size 4k; #       (nginx)              proxy_buffers 4 32k; #proxy_buffers   ,     32k      proxy_busy_buffers_size 64k; #        (proxy_buffers*2) proxy_temp_file_write_size 64k; #         ,     ,  upstream     
  • docker registry 의 설정 은 매번 전송 할 때마다 최소 9M 이상 의 내용 이 고 버퍼 설정 이 큽 니 다.
  • proxy_buffering on;
    proxy_buffer_size 4k; 
    proxy_buffers 8 1M;
    proxy_busy_buffers_size 2M;
    proxy_max_temp_file_size 0;
    

    ref
    nginx 공식 모듈 설명:http://nginx.org/en/docs/http/ngx_http_proxy_module.html
    타 오 바 오의 중국어 참고 판:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_proxy_module.html#proxy_buffering
    기타 참고:http://netexr.blog.51cto.com/2480285/1252245 http://blog.jiangming7.cn/toolssystem/server/nginx/692.html

    좋은 웹페이지 즐겨찾기