Nginx 고급 응용 --- 성능 최적화, C100K 돌파
소개:
Nginx 는 고성능 HTTP 와 역방향 프 록 시 서버 로 효율 적 인 epoll (linux 2.6 커 널), kquue (freebsd), eventport (solaris 10) 를 네트워크 I / O 모델 로 선택 할 수 있 으 며 50000 개의 동시 접속 수의 응답 을 지원 할 수 있 으 며 메모리, CPU 등 시스템 자원 소 모 는 매우 낮 고 운행 이 매우 안정 적 이다.
선택 한 이유:
* 높 은 병렬 연결 지원: nginx 는 효율 적 인 다 중 재 활용 모델 (epoll / linux, kquue / freebsd, eventport / solaris) 을 사용 합 니 다.
* 메모리 소모 가 적 음: 서버 3W 병렬 연결 에서 Nginx 프로 세 스 10 개 를 시작 하면 150 MB 메모리 소모 (15MB * 10)
* 원가 저렴: F5 BIG - IP, NetScaler 등 부하 균형 교환 기 를 구 매 하 는 데 몇 십 만 RMB 가 필요 하 며, 이러한 상업 설 비 를 대체 하기 위해 서 는 Nginx 가 필요 하 다.
* 기타 이유: 네트워크 설정 이 간단 합 니 다.rewrite 재 작성 규칙 을 지원 합 니 다. 도 메 인 이름, URL 에 따라 HTTP 요청 을 백 엔 드 서버 그룹 으로 나 눌 수 있 습 니 다.내 장 된 건강 검진 기능;대역 폭 을 절약 하고 GZIP 압축 을 지원 하 며 브 라 우 저 로 컬 캐 시 헤더 를 추가 할 수 있 습 니 다.열 배 치 를 지원 하여 끊 임 없 는 서비스 상황 에서 소프트웨어 버 전 을 업그레이드 할 수 있 습 니 다.
2. 환경
[root@nginx ~]$ uname -r
2.6.32-642.13.1.el6.x86_64
[root@nginx ~]$ uname -m
x86_64
[root@nginx ~]$ cat /etc/redhat-release
CentOS release 6.8 (Final)
3. 최적화
* nginx 프로필 최적화
- nginx 프로 세 스 수 는 cpu 수 에 따라 지정 하 는 것 을 권장 합 니 다. 일반적으로 배수 입 니 다.
- worker_processes 4;
- 모든 프로 세 스 에 cpu 바 인 딩:
- worker_cpu_affinity 00000001 00000010 00000100 00001000;
- nginx 프로 세 스 가 열 린 최대 파일 설명자 수:
- worker_rlimit_nofile 102400;
- epoll 의 I / O 재 활용 모델 사용 하기:
- use epoll;
- 모든 프로 세 스 가 허용 하 는 최대 연결 수:
- worker_connections 102400;
- keepalive 시간 초과:
- keepalive_timeout 60;
- 클 라 이언 트 가 요청 한 머리의 버퍼 크기: (페이지 크기 는 명령 getconf PAGESIZE 로 가 져 올 수 있 습 니 다):
- client_header_buffer_size 4k;
- 파일 지정 캐 시 를 엽 니 다. 기본 값 은 사용 되 지 않 았 습 니 다. max 는 캐 시 수량 을 지정 합 니 다. 파일 을 여 는 것 과 일치 하 는 것 을 권장 합 니 다. inactive 는 파일 이 요청 되 지 않 은 지 얼마 지나 지 않 아 캐 시 를 삭제 하 는 것 을 말 합 니 다.
- open_file_cache max=102400 inactive=20s;
- 캐 시 에 대한 유효한 정 보 를 확인 하 는 데 얼마나 걸 릴 지 지정 합 니 다:
- open_file_cache_valid 30s;
- 최소 사용 횟수 를 설정 합 니 다. 이 숫자 를 초과 하면 파일 설명 자 는 캐 시 에서 열 립 니 다.
- open_file_cache_min_uses 1;
* 시스템 최적화
- timewait 의 수량 은 기본적으로 180000 입 니 다.(Deven: 따라서 timewait 를 낮 추 려 면 tcp max tw buckets 값 을 줄 여야 합 니 다):
- net.ipv4.tcp_max_tw_buckets = 6000
- 시스템 이 열 수 있 는 포트 범위:
- net.ipv4.ip_local_port_range = 1024 65000
- timewait 빠 른 회수 사용 하기:
- net.ipv4.tcp_tw_recycle = 1
- 오픈 재사 용.TIME - WIT sockets 를 새로운 TCP 연결 에 다시 사용 할 수 있 도록 합 니 다:
- net.ipv4.tcp_tw_reuse = 1
- SYN 쿠키 를 시작 합 니 다. SYN 대기 열 이 넘 칠 때 cookies 를 사용 하여 처리 합 니 다.
- net.ipv4.tcp_syncookies = 1
- 웹 응용 프로그램 에서 listen 함수 의 backlog 는 기본적으로 커 널 매개 변수 인 net. core. somaxconn 을 128 로 제한 하고 nginx 가 정의 하 는 NGX 를 제공 합 니 다.LISTEN_BACKLOG 기본 값 511:
- net.core.somaxconn = 262144
- 대기 열 에 보 낼 패 킷 의 최대 수:
- net.core.netdev_max_backlog = 262144
- 시스템 에서 최대 몇 개의 TCP 소켓 이 사용자 파일 핸들 에 연결 되 지 않 습 니까?
- net.ipv4.tcp_max_orphans = 262144
- 클 라 이언 트 로부터 확인 되 지 않 은 연결 요청 의 최대 값 을 기록 합 니 다:
- net.ipv4.tcp_max_syn_backlog = 262144
- 시간 스탬프 는 시리 얼 번호 의 와 인 딩 을 피 할 수 있 습 니 다.
- net.ipv4.tcp_timestamps = 0
- 커 널 이 연결 을 포기 하기 전에 SYN + ACK 패키지 발송:
- net.ipv4.tcp_synack_retries = 1
- 커 널 이 연결 을 포기 하기 전에 SYN 패 키 지 를 보 내 는 수량:
- net.ipv4.tcp_syn_retries = 1
- FIN - WAIT - 2 상태 유지 시간:
- net.ipv4.tcp_fin_timeout = 1
- keepalive 가 시 작 될 때 TCP 가 keepalive 메 시 지 를 보 내 는 빈도 입 니 다.결 성 은 2 시간:
- net.ipv4.tcp_keepalive_time = 30
4. 총결산
수요 구동 기술 로 기술 자 체 는 우략 의 구분 이 없고 업무 의 구분 만 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.