zoukankan      html  css  js  c++  java
  • nginx优化

    背景

         客户端发起请求 通过slb 给到nginx,然后nginx再给到后端,经常出现请求接口超时,nginx日志都没有问题(也就是给到nginx处理的请求都完成了),查看slb的流量,远远小于带宽(网络层面应该没有问题),所以问题应该在请求到达nginx操作系统层面。优化nginx在操作系统上面的请求。

    worker_processes  8;  改为核心数

    events {
        use epoll;
        worker_connections 65535;
        multi_accept on;  #可以一次建立多个连接
    }

       sendfile on;
       tcp_nopush on;
       tcp_nodelay on;
       keepalive_timeout 65; 

       gzip on;
       client_header_buffer_size 512k;
       large_client_header_buffers 4 512k;
       proxy_send_timeout 600;
       proxy_read_timeout 600;
       proxy_connect_timeout 600;
       client_max_body_size 500m;

    vim /etc/sysctl.conf

    vm.swappiness = 0
    kernel.sysrq = 1
    
    net.ipv4.neigh.default.gc_stale_time = 120
    
    # see details in https://help.aliyun.com/knowledge_detail/39428.html
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_announce = 2
    
    # see details in https://help.aliyun.com/knowledge_detail/41334.html
    net.ipv4.tcp_max_tw_buckets = 5000
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_synack_retries = 2
    
    net.ipv6.conf.lo.disable_ipv6 = 1
    
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.core.somaxconn = 40960
    net.ipv4.tcp_fin_timeout = 10
    net.ipv4.tcp_keepalive_time = 150
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_max_tw_buckets = 20000
    net.ipv4.tcp_max_syn_backlog = 8096
    net.ipv4.ip_local_port_range = 1024 65000
    

    下面的命令 可能和上面的效果一样,直接运行

    echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle
    echo "0" > /proc/sys/net/ipv4/cp_timestamps
    sysctl -w net.ipv4.tcp_tw_recycle=0
    sysctl -w net.ipv4.tcp_timestamps=0
    
    net.ipv4.tcp_tw_recycle = 0

    ulimit -a   这个也调整一下

    cat wxpt.access.log-20210518 |grep jianhuochakucun |grep -v "ups_status:200"

     location /oms_order {   

          proxy_pass http://omsorder/;
      proxy_redirect default;
      proxy_read_timeout 300;
      proxy_connect_timeout 300;
      proxy_send_timeout 300;
      client_max_body_size 50m;
      proxy_buffer_size 16k;
      proxy_buffering on;
      proxy_buffers 4 64k;
      proxy_busy_buffers_size 128k;
      proxy_temp_file_write_size 128k;

    }

    proxy_ignore_client_abort off;
    当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。即如果此项设置为on开启,则服务器会忽略客户端中断并一直等着代理服务执行返回,如果设置为off,则客户端中断后nginx也会中断客户端请求并立即记录499日志,默认为off

    要有多努力才能对得起奔波的脚步和身上的期望
  • 相关阅读:
    UVA 1515 Pool construction 最大流跑最小割
    BZOJ 1060: [ZJOI2007]时态同步 树形DP
    Codeforces Round #282 (Div. 1)B. Obsessive String KMP+DP
    BZOJ 4027: [HEOI2015]兔子与樱花 贪心
    BZOJ 2435: [Noi2011]道路修建 dfs搜图
    HDU 5297 Y sequence 容斥/迭代
    HDU 5296 Annoying problem dfs序 lca set
    HDU 5289 Assignment RMQ
    343D/Codeforces Round #200 (Div. 1) D. Water Tree dfs序+数据结构
    php mysqli扩展库之预处理操作
  • 原文地址:https://www.cnblogs.com/hxfcodelife/p/14762587.html
Copyright © 2011-2022 走看看