nginx 성능 최적화 및 커 널 파라미터 조정

7882 단어 링크 ux 운영
Nginx 설정 매개 변수 최적화
Nginx 는 고성능 웹 서버 로 서 설정 파 라 메 터 를 특별히 조정 하지 않 아 도 대량의 병행 요청 을 처리 할 수 있 습 니 다.아래 의 설정 매개 변 수 는 인터넷 의 일부 변조 매개 변 수 를 참고 하 는 것 으로 참고 로 서 당신 의 온라인 업무 에 적합 하지 않 습 니 다.
worker 프로 세 스
worker_processes

             ,     CPU      ,   CPU      。

worker_rlimit_nofile

   Nginx            ,            ,     102400。
         ulimit -n 102400   。
           /etc/security/limits.conf  
  :
#* soft nofile 655350 (     #)
#* hard nofile 655350 (     #)

worker_connections

         Nginx worker          ,         Nginx               
(worker_processes * worker_connections),         10240,     。

http 와 tcp 연결
use epoll

  epoll         ,    Linux       。

multi_accept on

   worker               。

sendfile on

     FD      ,    user mode kernel mode   ,         。

tcp_nopush on

 tcp_nopush   on ,   tcp_cork        。
             :          ,         ,                 ,    。

tcp_nodelay on

   data-sends(   Nagle   ),                   。
(  Nagle  )
【               ,   1   , IPv4    ,        40    ,
    ,  41       ,    1           。
        ,   Nagle  。
   :        MSS,        ,           ,                    。
       ,            ,        。】

keepalive_timeout

          ,  30s,            ,  ,                     。

keepalive_requests

                   ,              ,      ,  50000.

reset_timeout_connection on

   on  ,               ,          。

client_body_timeout

                 body  ,     ,    ,  60,     10。

send_timeout

                , Nginx             ,                。
        send_timeout       ,  Nginx        。    ,     3。

buffer 와 cache (아래 설정 은 하나의 요청 에 대한 것 입 니 다)
client_body_buffer_size

     POST             ,     client_body_buffer ,  buffer          ,     128k。

client_max_body_size

          HTTP body    ,       Content-Length  ,client_max_body_size     Content-Length       。
    body      Nginx      HTTP  ,               。   413   。
  ,        1GB   ,Nginx      ,  Content-Length  client_max_body_size    ,
     413(Request Entity Too Large)      。
       0,     ,     10m。

client_header_buffer_size

     header buffer  ,  4k。

large_client_header_buffers

      header(  client_header_buffer_size)       buffer,    ,      ,      buffer   。
     4 8k

open_file_cache

             :
                   ;
       ;
         (             )。
  :open_file_cache max=size inactive=time;
max         ,inactive                   。
     open_file_cache max=102400 inactive=20s;

open_file_cache_valid

                。     30s。

open_file_cache_min_uses

open_file_cache    inactive              ,
 ,       1,   ,     inactive          ,     。
     2。

압축 하 다.
순수한 텍스트 의 내용 에 대해 Nginx 는 gzip 로 압축 할 수 있 습 니 다.압축 기술 을 사용 하면 대역 폭 에 대한 소 모 를 줄 일 수 있다.ngxhttp_gzip_모듈 모듈 지원
설정 은 다음 과 같 습 니 다: gzip on; /gzip 기능 오픈 gzipmin_length 1024; //요청 자원 이 이 수 치 를 초과 하여 압축 할 수 있 도록 설정, 단위 바이트 gzipbuffers 16 8k; //압축 에 사용 할 buffer 크기 를 설정 합 니 다. 첫 번 째 숫자 는 수량 이 고 두 번 째 숫자 는 각각 buffer 의 크기 gzip 입 니 다.comp_level 6; //압축 레벨 설정, 범위 1 - 9, 9 압축 레벨 이 가장 높 고 CPU 자원 gzip 소모types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png; //어떤 종류의 파일 을 압축 해 야 하 는 지 지정 gzipdisable "MSIE 6."; //IE6 브 라 우 저 는 압축 을 사용 하지 않 습 니 다.
테스트: curl - I - H "Accept - Encoding: gzip, deflate"http://www.aminglinux.com/1.css
로그
        ,  crit  ,            。
      ,         ,    ,
           

정적 파일 만 료
정적 파일 에 대해 만 료 시간 을 설정 해 야 합 니 다. 그러면 이 자원 을 클 라 이언 트 브 라 우 저 에 캐 시 할 수 있 습 니 다. 캐 시가 효력 을 잃 지 않 기 전에 클 라 이언 트 는 서비스 기간 에 같은 자원 을 요청 하지 않 고 대역 폭 과 자원 소 모 를 절약 할 수 있 습 니 다.
설정 예 는 다음 과 같 습 니 다: location ~ * ^. +. (gif | jpg | png | css | js) ${expires 1d; / 1d 는 하루 를 표시 하고 24h 로 하루 를 표시 할 수 있 습 니 다.}
프 록 시 서버 로
Nginx 는 대부분 대리 나 부하 균형 을 이 루 는 역할 을 한다.앞에서 설명 한 인자 의 의 미 는 http {proxy cache path / data / nginx cache / levels = 1: 2 keys zone = my zone: 10 m inactive = 300 s max size = 5g; server{proxy_buffering on;proxy_buffer_size 4k;proxy_buffers 2 4k;proxy_busy_buffers_size 4k;proxy_temp_path /tmp/nginx_proxy_tmp 1 2;proxy_max_temp_file_size 20M;proxy_temp_file_write_size 8k;
location /
{
    proxy_cache my_zone;
    ...;
}
}

}
SSL 최적화
    worker_processes  ,  ssl      CPU   。
     ,      ssl  ,         (  、  )
  ssl  ,          “  ”  。

ssl_session_cache   shared:SSL:10m; //   10M
ssl_session_timeout 10m; //       10  

Linux 커 널 파라미터 조정
고성능 WEB 서버 로 서 Nginx 자체 의 매개 변수 만 조정 해 서 는 안 됩 니 다. Nginx 서 비 스 는 고성능 운영 체제 에 의존 하기 때 문 입 니 다. 다음은 흔히 볼 수 있 는 몇 개의 Linux 커 널 매개 변수 최적화 방법 입 니 다.
net.ipv4.tcp_max_tw_buckets
  tcp  ,               timewait,          ,        ,    timewait        。
             ,          ,      ,           ,            。
       net.ipv4.tcp_max_tw_buckets        。
CentOS7  ,     sysctl -a |grep tw_buckets      ,   32768,
         ,     8000,                   。
          、    ,       tcp       ,
                ,            ,       ,    。

net.ipv4.tcp_tw_recycle = 1
           timewait     。              timewait     ,                    。
        1    timewait         ,               。

net.ipv4.tcp_tw_reuse = 1
      1, timewait           TCP  ,            。

net.ipv4.tcp_syncookies = 1
tcp     ,         syn  ,      ,        syn      ack  ,
                     ,             ,        ,
              (    30s),              ,           ,      ,
        ,              syn flood***。
   1,   SYN Cookies,            syn flood***。
      ,         ack ,       ack+syn     client           ,
                              ,     ack+syn    ,       。

net.ipv4.tcp_max_syn_backlog
                   tcp   。          syn ,      ,     ,
                 。 CentOS7,   256,  syn flood*** ,                 ,
                 (cpu、   ),         ,     30000。

net.ipv4.tcp_syn_retries
         ,     syn       ,   6,    2。

net.ipv4.tcp_synack_retries
         ,     syn+ack       ,   5,    2,      syn flood。

net.ipv4.ip_local_port_range
         ,         1024   ,          。          ,
             ,         80  ,                    ,
             。   32768    61000,     1025 61000。

net.ipv4.tcp_fin_timeout
tcp      ,        FIN-WAIT-2  ,       timewait     。
                       ,    60,     6。

net.ipv4.tcp_keepalive_time
tcp     ,    established  ,        ,           。     ,     ,
                 ,        timewait,            ,
                 (  ,        ),          。
          ,               established,              ,
                             。           。      7200 ,     30 。

net.ipv4.tcp_keepalive_intvl
             ,              ,         ,          ,
                ,       。              ,            ,         。
    75 ,    3 。

net.ipv4.tcp_keepalive_probes
 10  11                           ,                。
              。   9,    2。

설정 과 범례
Linux 에서 커 널 파 라 메 터 를 조정 하면 설정 파일 / etc / sysctl. conf 를 직접 편집 한 다음 sysctl - p 명령 을 실행 할 수 있 습 니 다.
위 에서 분석 한 각 커 널 매개 변 수 를 결합 한 범례 는 다음 과 같 습 니 다. net. ipv4. tcp fin timout = 6net. ipv4. tcp keepalive time = 30net. ipv 4. tcp max tw buckets = 8000net. ipv 4. tcp tw reuse = 1net. ipv4. tcp tw recuse time = 30net. ipv4. tcp syncookies = 1net. ip4.4. tcp max syn buckets max syn backlog = 3000 net. ipv4. ipv4. tcp www syn resuse = = 2net. ipv 4. ipv 4. tcp syn www. tcp tw tw tw tw tw tw retries retries = 1025 61000net.ipv4.tcp_keepalive_intvl = 3net.ipv4.tcp_keepalive_probes = 2

좋은 웹페이지 즐겨찾기