nginx 및 운영 체제 설정 최적화

7652 단어
최근 에 프로젝트 의 온라인 을 만 들 었 습 니 다. 프로젝트 는 공공 네트워크 에 배치 되 었 고 Jetty 를 응용 서버 로 사용 하 였 습 니 다. 온라인 프로젝트 의 접근 속 도 를 높이 기 위해 nginx 를 사전 장치 로 사용 하 였 으 며 나중에 nginx 와 운영 체제 의 설정 을 최적화 시 켜 로 그 를 작성 하여 잊 지 않도록 하 였 습 니 다.
nginx 설정
#user  nobody;
#nginx   ,    cpu     ,       。
worker_processes  8;
#       cpu,    8      8 cpu,       ,            cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#         nginx              ,             (ulimit -n) nginx     ,  nginx           ,     ulimit -n      。
worker_rlimit_nofile 102400;
#    
error_log  logs/error.log;
#nginx PID  
pid        logs/nginx.pid;
events {
    #  epoll I/O  
    use epoll;
    #            ,     nginx          worker_processes*worker_connections
    worker_connections  102400;
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    #             ,                 ,               1k,              1k,           。         getconf PAGESIZE  
    client_header_buffer_size 4k;
    client_max_body_size 8M;
    client_body_buffer_size 128k;
    #            ,        ,max      ,          ,inactive                   
    open_file_cache max=102400 inactive=20s;
    #                   
    open_file_cache_valid 30s;
    #open_file_cache    inactive              ,        ,               ,   ,        inactive         ,     
    open_file_cache_min_uses 1;

    #keepalive    
    keepalive_timeout  65;

    tcp_nodelay on;

    #    
    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    #  1k        
    gzip_min_length  1k;
    #    ,       ,    CPU  
    gzip_comp_level 2;
    gzip_proxied any;
    #  content-type    
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    #   buffer  
    gzip_buffers 4 16k;
    # Disable gzip for certain browsers.
    gzip_disable “MSIE [1-6].(?!.*SV1)”;
    #websocket    
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';

    server {
        listen       80;
        server_name  *.abc.com;

        charset UTF-8;

        access_log  /opt/nginx/logs/access.log  access;

        #      jetty root  
        root /opt/jetty/webapps/root;

        #    /, 301    /A/
        location = / {
            return 301 /A/;
        }

        #  /   
        location / {
            root   /opt/jetty/webapps/root/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        #        ,      10 
        location ~ /\.(gif|jpg|png|js|css)$ {
            root   /opt/jetty/webapps/root/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            expires 10d;
        }
        #  /A/websocket1.do websocket       jetty     
        location = /A/websocket1.do {
            proxy_pass http://127.0.0.1:8080/A/websocket1.do;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        #  /A/websocket2.do websocket       jetty     
        location = /A/websocket2.do {
            proxy_pass http://127.0.0.1:8080/A/websocket2.do;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        #    A     ,      10 
        location ~ /A/\.(gif|jpg|png|js|css)$ {
            root   /opt/jetty/webapps/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            expires 10d;
        }
        #  /A        jetty     
        location /A {
            proxy_pass http://127.0.0.1:8080/A;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        #  jetty       
        location /download/ {
            internal;
            alias   /somewhere/; # note the trailing slash
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        #     /A/view/
        location = /A/view/ {
           return 404;
        }

        #        
        error_page  403              /static/403.html;
        error_page  404              /static/404.html;
        error_page  500 503 504  /static/500.html;
        error_page  502  /static/502.html;
   }
}

이에 따라 시스템 매개 변 수 를 수정 했다. 다음 과 같다.
vim /etc/sysctl.conf
# Disable response to broadcasts.
# You don't want yourself becoming a Smurf amplifier.
net.ipv4.icmp_echo_ignore_broadcasts = 1
# enable route verification on all interfaces
net.ipv4.conf.all.rp_filter = 1
# enable ipV6 forwarding
#net.ipv6.conf.all.forwarding = 1
# increase the number of possible inotify(7) watches
fs.inotify.max_user_watches = 65536
# avoid deleting secondary IPs on deleting the primary IP
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1

#timewait   ,   180000
net.ipv4.tcp_max_tw_buckets = 6000
#           
net.ipv4.ip_local_port_range = 1024    65000
#  timewait    
net.ipv4.tcp_tw_recycle = 1
#    。   TIME-WAIT sockets      TCP  
net.ipv4.tcp_tw_reuse = 1
#  SYN Cookies,   SYN       ,  cookies   
net.ipv4.tcp_syncookies = 1
#web   listen   backlog           net.core.somaxconn   128, nginx   NGX_LISTEN_BACKLOG   511,          
net.core.somaxconn = 262144
#                           ,               
net.core.netdev_max_backlog = 262144
#         TCP                   。        ,                  。              DoS  ,                 ,        (         )
net.ipv4.tcp_max_orphans = 262144
#                         。   128M       ,    1024,        128
net.ipv4.tcp_max_syn_backlog = 262144
#             。  1Gbps                。            “  ”    。        
net.ipv4.tcp_timestamps = 0
#         ,        SYN           SYN ACK。                。                 SYN+ACK    
net.ipv4.tcp_synack_retries = 1
#             SYN    
net.ipv4.tcp_syn_retries = 1
#            ,           FIN-WAIT-2     。              ,      。    60 。2.2        180 ,        ,      ,            WEB   ,                   ,FIN- WAIT-2     FIN-WAIT-1  ,         1.5K  ,          
net.ipv4.tcp_fin_timeout = 1
# keepalive     ,TCP  keepalive     。   2  
net.ipv4.tcp_keepalive_time = 30

또한 운영 체제 에서 열 수 있 는 최대 파일 수 를 늘 렸 습 니 다.
vim /etc/security/limits.conf
*    hard    nofile  102400
*    soft    nofile  102400

좋은 웹페이지 즐겨찾기