nginx 실 기 (2) 프로필 & 커 널 & 로그 설명

8935 단어 nginx
커 널 파라미터 최적화
cat /etc/sysctl.conf
net.ipv4.ip_forward = 0
        ,0   ,1   

net.ipv4.conf.default.rp_filter = 1
        

net.ipv4.conf.default.accept_source_route = 0
        

net.ipv4.tcp_max_tw_buckets = 6000
        TIME_WAIT        ,        ,TIME_WAIT                。   180000,   5000。  Apache、Nginx    ,             TIME_WAIT     。        TIME_WAIT        .

net.ipv4.ip_local_port_range = 1024 65000
             。       :32768 61000,  1024 65000。

net.ipv4.tcp_tw_recycle = 1
  timewait     。

net.ipv4.tcp_tw_reuse = 1
    。   TIME-WAIT sockets       TCP   。

net.ipv4.tcp_syncookies = 1
  SYN Cookies,   SYN        ,  cookies    。

net.ipv4.tcp_max_orphans = 262144
         TCP                    。        ,                  。              DoS   ,                 ,        (         )。

net.ipv4.tcp_keepalive_time = 1200
 keepalive      ,TCP   keepalive      。   2  。

net.ipv4.tcp_keepalive_intvl = 30
        ,         。   75 

net.ipv4.tcp_keepalive_probes = 3
         ,     TCP keepalive   。    9。     tcp_keepalive_intvl     ,       keepalive             

net.ipv4.tcp_synack_retries = 1
         ,        SYN            SYN  ACK。                。                 SYN+ACK     。
syn-ack        ,  5,  syn-flood     1 2 

net.ipv4.tcp_syn_retries = 2
  syn      ,  4

net.ipv4.tcp_max_syn_backlog = 262144
                         。   128M        ,    1024,        128。

net.ipv4.tcp_timestamps = 0
             。  1Gbps                 。            “  ”    。        。

net.core.rmem_max = 16777216
  socket buffer

net.core.wmem_max = 16777216
  socket buffer

net.ipv4.tcp_rmem = 4096 87380 4194304
TCP buffer

net.ipv4.tcp_wmem = 4096 16384 4194304
TCP buffer

net.core.wmem_default = 8388608
                    (      )。

net.core.rmem_default = 8388608
                    (      )。

net.core.rmem_max = 16777216
           (    )      (      );   TCP      

net.core.wmem_max = 16777216
           (    )      (      );   TCP      

kernel.sysrq = 0
             

kernel.core_uses_pid = 1
           

kernel.msgmnb = 65536
             

kernel.msgmax = 65536
       size.

kernel.shmmax = 68719476736
                 

kernel.shmall = 4294967296
        

net.core.somaxconn = 262144
listen()     ,         .   128.       ,           .

예시
# sysctl  -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 262144
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.swappiness = 0
fs.file-max = 409600

2. nginx 최적화 설정
프로필 설명:
user  nginx;
  nginx     

worker_processes  8;
nginx    ,    cpu      ,     :# cat /proc/cpuinfo  | grep processor  | wc -l

worker_cpu_affinity
       cpu,    8       8  cpu,       ,            cpu。

worker_rlimit_nofile  409600
  nginx              ,             ,   ulimit -n  

error_log  /app/local/log/nginx/error.log warn;
             

use epoll;
  epoll  

worker_connections  51200;
            ,      nginx           worker_processes*worker_connections。

server_names_hash_bucket_size 64;
        hash      server_names_hash_max_size   server_names_hash_bucket_size    。  hash bucket size    hash    ,               。              ,          hash       。   hash bucket size            ,         ,                2。             ,               。  ,  Nginx       hash max size   hash bucket size   ,                .

proxy_headers_hash_max_size 51200;
           ,                 。

proxy_headers_hash_bucket_size 6400;
               ,       64              。

server_tokens off;
       

include       /app/local/nginx/conf/mime.types;
nginx       

tcp_nopush  on;
  nginx              ,          

tcp_nodelay on;
  nginx      ,         �          ,            ,                      。

keepalive_timeout 
client_header_timeout 20;
client_body_timeout 20;
      keep-alive      。                 。           ngnix         。client_header_timeout  client_body_timeout          (  )     。            。

reset_timedout_connection
  nginx           。                  。

send_timeout 10;
            。             ,              。        ,           ,nginx      。

sendfile    on;
sendfile   sendfile()    。sendfile()      TCP socket        (          )。Pre-sendfile                   。   read()              ,write()          。sendfile()           OS  。             ,sendfile()    read() write()              (     sendfile)


reset_timedout_connection on;
nginx           。                  。

send_timeout 30;
            。             ,              。        ,           ,nginx      。

gzip on;
  GZIP  ,         

gzip_min_length 1k;
 Content-Length       ,  1K     

gzip_buffers 4 16k;
 16K   4              ,                       gzip    。

gzip_http_version 1.0;
  1.1,          gzip  

gzip_comp_level 4;
    1-9,1           ,9            CPU

gzip_types text/plain application/x-javascript text/css application/xml;
    ,      text/html     

gzip_vary on;
            

#            ,    
open_file_cache
                 ,       。                ,              20     。

open_file_cache_valid 
 open_file_cache              。

open_file_cache_min_uses 
   open_file_cache                   。

open_file_cache_errors
                   ,             。           ,            。               ,                。

2.2. 예시 설명
user  nginx;
worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 409600;


error_log  /app/local/log/nginx/error.log warn;
pid        /app/local/nginx/logs/nginx.pid;


events {
	use epoll;
    worker_connections  204800;
}


http {

	server_names_hash_bucket_size 64;
    proxy_headers_hash_max_size 51200;
    proxy_headers_hash_bucket_size 6400;
    include       /app/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" $http_x_forwarded_for $request_length $msec $connection_requests $request_time';

    access_log  /app/local/log/nginx/access.log  main;

	server_tokens off;
    sendfile    on;
    tcp_nopush  on;
	tcp_nodelay on;
	
    keepalive_timeout  65;
	client_header_timeout 20;
	client_body_timeout 20;
	reset_timeout_connection 30;
	send_timeout 30;

	gzip on;
	gzip_min_length 1k;
	gzip_buffers 4 16k;
	gzip_http_version 1.0;
	gzip_comp_level 4;
	gzip_types text/plain application/x-javascript text/css application/xml;
	gzip_vary on;

	open_file_cache max=409600 inactive=30s;
	open_file_cache_valid 30s;
	open_file_cache_min_uses 2;
	open_file_cache_errors on;
	
    include /app/local/nginx/conf/vhosts/*.conf;
}

3. 로그 형식 설명
$remote_addr, $http_x_forwarded_for      IP  
$remote_user          
$request      URL HTTP  
$status       
$body_bytes_sent           ,         ;     Apache  mod_log_config  “%B”    。
$bytes_sent            。
$connection       。
$connection_requests                。
$msec       。    ,     。
$pipe        HTTP   (pipelined)  ,pipe  “p”,   “.”。
$http_referer               
$http_user_agent             
$request_length      (     ,        )。
$request_time       ,    ,    ;               ,                        。
$time_iso8601 ISO8601          。
$time_local             。

3.2. 예시:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" $http_x_forwarded_for $request_length $msec $connection_requests $request_time';
					 
$remote_addr:      IP  
$remote_user:      
$time_local:        
$request:    URL HTTP  
$status:      
$body_bytes_sent:          ,         
$http_referer:              
$http_user_agent:            
$http_x_forwarded_for:             
$request_length:     
$msec:      
$connection_requests:               
$request_time:      

좋은 웹페이지 즐겨찾기