nginx 부하 균형, io 쓰기 최적화

서버: DELL R710  Xeon E5620 *2/16G/300G SAS*5 raid5
시스템: centos 5.7 64bit
서비스 구조:  nginx -- > squid --- > 저장
 
현재 의 문제: 저녁 피크 의 단일 컴퓨터 트 래 픽 이 150 Mbit / s 서버 의 부하 로 40 - 50 까지 올 라 갑 니 다.
 
1. 부하 가 높 은 것 은 io 로 인 한 것 입 니 다. io 소프트웨어 로 분석 해 보 세 요. 주로 io 쓰기 작업 입 니 다. squid 명중률 이 80% 가 되면 읽 기 동작 이 쓰기 동작 보다 커 야 합 니 다. 아무리 생각해 도 이해 가 되 지 않 습 니 다.
dstat 명령 으로 대부분의 쓰기 동작 을 분석 한 것 은 nginx 가 일 으 킨 것 이 었 습 니 다. nginx 는 퍼 가기 만 했 을 뿐 cache 를 하지 않 았 습 니 다. 왜 이렇게 큰 쓰기 io 가 생 겼 습 니까?
인터넷 에서 nginx 관련 자 료 를 찾 았 습 니 다. 다음 과 같 습 니 다.
nginx 매번 request 는 proxy 로 컬 에서 캐 시 를 찾 아야 합 니 다. 없 을 때 만 실제 서버 를 요청 합 니 다. 사실 설정 에 proxy 를 설정 하지 않 았 습 니 다.stroe 와 같은 매개 변 수 는 그 자체 가 I / O 를 부하 해 야 하기 때문에 모두 Cache 가 proxy 에 도착 하면 진정한 목적 을 달성 하지 못 할 것 입 니 다. 게다가 Cache 는 작은 파일 이 아 닌 대량의 파일 에 적합 하지 않 습 니 다.
proxy_buffering
syntax: proxy_buffering on|off
default: proxy_buffering on
context: http, server, location
This directive activate response buffering of the proxied server.
If buffering is activated, then nginx assumes the answer of the proxied server as fast as possible, preserving it in the buffer, assigned by directive proxy_buffer_size and proxy_buffers .
If the response can not all be placed in memory, then parts of it will be written to disk.
If buffering is switched off, then the response is synchronously transferred to client immediately as it is received.
nginx do not attempt to count entire answer of the proxied server, maximum size of data, which nginx can accept from the server it is assigned by directive proxy_buffer_size .
For Comet applications based on long-polling it is important to set proxy_buffering to off, otherwise the asynchronous response is buffered and the Comet does not work.
드디어 문제점 을 발 견 했 습 니 다. off 를 설치 한 후에 reload 를 하면 부하 가 50 에서 5 로 떨 어 집 니 다. 이것 도 너무 과장 되 어서 상상 할 수 없습니다.
단순히 부하 균형 을 잡 고 대 리 를 하지 않 는 다 면 이 항목 은 반드시 닫 아야 한다. 그렇지 않 으 면 불필요 한 소모 만 있 을 뿐이다.
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기