nginx 설정 최적화
2794 단어 linux/unix
http://nginx.org/en/docs/ngx_core_module.html#example worker_processes
worker_processes 명령 제어 작업 프로 세 스 수:
worker_processes 1;
기본 값 이 1 인 것 은 NGINX 가 하나의 worker 만 실행 한 다 는 것 을 의미한다.이 값 은 사용 가능 한 커 널 수, 디스크, 네트워크 서브 시스템, 서버 부하 등에 따라 최 적 값 으로 변경 해 야 합 니 다.우 리 는 값 을 사용 가능 한 핵심 수로 설정 할 수 있다.lscpu 를 사용 하여 사용 가능 한 핵심 수 를 확인 합 니 다:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
grep cpuinfo 를 통 해 얻 을 수 있 습 니 다:
$ cat /proc/cpuinfo | grep 'processor' | wc -l
지금 우 리 는 worker 수 를 4 로 설정 합 니 다.
# One worker per CPU-core.
worker_processes 4;
또는 auto 로 설정 할 수 있 습 니 다.이렇게 nginx 는 핵심 수 에 따라 대응 하 는 워 커 프로 세 스 를 자동 으로 생 성 합 니 다.
accept_mutex
NGINX 에 여러 명의 workers 를 설 치 했 기 때문에 worker 에 영향 을 주 는 관련 명령 도 설정 해 야 합 니 다.이벤트 영역 아래 acceptmutex 매개 변 수 는 사용 가능 한 워 커 프로 세 스 마다 새로운 연결 을 받 아들 일 것 입 니 다.기본적으로 이 플래그 는 on 으로 설정 되 어 있 습 니 다.예:
events {
accept_mutex on;
}
하면, 만약, 만약...mutex 는 off 입 니 다. 사용 가능 한 모든 worker 는 대기 상태 에서 깨 어 나 지만 하나의 worker 만 연결 을 처리 합 니 다.이 로 인해 사람들 을 놀 라 게 하 는 현상 이 1 초 에 여러 번 반복 된다.이 현상 으로 인해 서버 성능 이 떨 어 졌 습 니 다. 깨 어 난 모든 워 커 가 CPU 시간 을 차지 하고 있 기 때 문 입 니 다.이 로 인해 비 생산 적 인 CPU 주기 와 사용 되 지 않 은 컨 텍스트 전환 이 증가 했다.
accept_mutex_delay
accept 사용 하기mutex 는 상호 배척 잠 금 이 있 는 워 커 프로그램 만 연결 을 받 고 다른 작업 프로그램 은 돌아 가면 서 기 다 립 니 다.accept_mutex_delay 는 워 커 가 기다 리 는 시간 프레임 에 대응 하고 상호 배척 자 물 쇠 를 가 져 와 새로운 연결 을 받 아들 이려 고 시도 합 니 다.기본 값 은 500 밀리초 입 니 다.
events{
accept_mutex_delay 500ms;
}
worker_connections
다음 에 볼 설정 은 worker connections 입 니 다. 기본 값 은 512 입 니 다. 이 명령 은 worker 프로 세 스 가 최대 로 연 연결 수 를 설정 합 니 다.
events{
worker_connections 512;
}
worker connections 를 1024 또는 더 높 은 값 으로 늘 려 더 많은 연결 을 동시에 처리 할 수 있 도록 합 니 다.
worker_rlimit_nofile
시스템 에서 사용 할 수 있 는 파일 설명자 의 개수 에 제한 을 받 습 니 다. 소켓 마다 파일 설명자 가 열 리 기 때 문 입 니 다. NGINX 가 사용 가능 한 파일 설명자 보다 더 많은 소켓 을 열 려 고 시도 하면 error. log 에 Too many opened files 정보 가 나타 납 니 다. ulimit 를 사용 하여 파일 설명자 의 수 를 검사 합 니 다.
$ ulimit -n
현재 이 값 을 worker processes * worker connections 보다 큰 값 으로 늘 립 니 다. 현재 worker 가 실행 중인 사용자 의 최대 파일 열기 수 치 를 늘 려 야 합 니 다. NGINX 는 worker rlimit nofile 명령 을 제공 합 니 다. 이것 은 ulimit 를 제외 한 사용 가능 한 설명 자 를 설정 하 는 방식 입 니 다. 이 명령 은 ulimit 를 사용 하여 사용자 에 대한 설정 과 같은 효 과 를 가 집 니 다. 이 명령 의 값 은 ulimit 를 덮어 씁 니 다.의 값
worker_rlimit_nofile 20960;
multi_accept
multi accept 명령 은 NGINX worker 가 새로운 연결 알림 을 받 을 때 가능 한 한 많은 연결 을 받 아들 일 수 있 도록 합 니 다. 이 명령 은 모든 연결 을 감청 대기 열 에 즉시 받 아들 이 는 역할 을 합 니 다. 명령 이 비활성화 되면 worker 프로 세 스 는 하나씩 연결 을 받 아들 입 니 다.
events{
multi_accept on;
}