zoukankan      html  css  js  c++  java
  • [Nginx优化]分享nginx配置文件及优化说明

    1、系统及内核方面
        根据服务器用途,建议系统最小化安装或针对web服务器进行系统内核重新编译;在内核参数的一些优化,如下:
    # Add
    net.ipv4.tcp_max_syn_backlog = 65536   #表示SYN队列的长度
    net.core.netdev_max_backlog =  32768  #进入包的最大设备队列.
    net.core.somaxconn = 32768            #listen()的默认参数,挂起请求的最大数量.
    net.core.wmem_default = 8388608     #指定了发送套接字缓冲区大小的缺省值
    net.core.rmem_default = 8388608    
    net.core.rmem_max = 16777216      #最大socket写buffer
    net.core.wmem_max = 16777216     #最大socket读buffer
    net.ipv4.tcp_timestamps = 0    #可以防范那些伪造的sequence号码,关掉可以提高性能。
    net.ipv4.tcp_synack_retries = 2 
    net.ipv4.tcp_syn_retries = 2   # 新连接,内核要发送多少个SYN连接请求才决定放弃。
    net.ipv4.tcp_tw_recycle = 1     #开启TCP连接中TIME-WAIT sockets的快速回收
    net.ipv4.tcp_tw_reuse = 1      #允许将TIME-WAIT sockets重新用于新的TCP连接。
    net.ipv4.ip_local_port_range = 5000  65535  #将系统对本地端口范围限制在5000~65000

    2、配置方面优化
       如编译时使用 --with-cc-opt='-O3' 增加GCC的优化;去掉Nginx的debug模式编译(debug模式会插入很多跟踪和ASSERT之类),这样编译后文件大小降低几倍之多;
    nginx配置文件
    user  www www;
    worker_processes 8;   #设置为CPU数目(核数),需根据实际情况进行设置。
    error_log   logs/nginx_error.log  crit;
    pid        logs/nginx.pid;

    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 51200;  #进程能够打开的最多文件描述符数(65535)
    events
    {
            use epoll;  
            worker_connections 51200;  每个工作进程允许最大的同时连接数

             #服务器允许的最大连接数跟worker_processes 、worker_connections 有直接关系。
    }

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

            #charset  gb2312;
         
            server_names_hash_bucket_size 128; 
            client_header_buffer_size 32k;     #客户端请求的Head头缓冲区大小,如果cookie内容较大,需加大
            large_client_header_buffers 4 32k;   
            client_max_body_size 8m;     #设置客户端能够上传的文件大小
         
            sendfile on;
            tcp_nopush     on;
            keepalive_timeout 60;
            tcp_nodelay on;

            fastcgi_connect_timeout 300;
            fastcgi_send_timeout 300;
            fastcgi_read_timeout 300;
            fastcgi_buffer_size 64k;
            fastcgi_buffers 4 64k;
            fastcgi_busy_buffers_size 128k;
            fastcgi_temp_file_write_size 128k;
            fastcgi_intercept_errors on;
            fastcgi_hide_header Pragma;

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

            autoindex off;
            server_tokens off;
            server_name_in_redirect off;
       
            include zhuji0.conf;    #实现nginx VirtualHost
    }
      
    3、Nginx(针对webserver)环境运行php-cgi,可配置php加速器,这样可提高nginx处理能力。可以加入php加速器eaccelerator


    4、其他方面
       1)由于nginx 中有FastCGI 相关参数,FastCGI 自身的一些配置进行优化也是很重要的,我们的web环境都使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:
    <value name="max_children">300</value>  #这可以根据系统负载及服务器访问量情况进行调整。
    同时处理的并发请求数,即它将开启最多300 个子线程来处理并发连接。
    <value name="rlimit_files">102400</value>
    最多打开文件数。
    <value name="max_requests">204800</value>
    每个进程在重置之前能够执行的最多请求数。
       2)修改Nginx的header伪装服务器,这更多是为了服务安全。
       3)  php-fpm默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这有可能导致nginx出错或影响nginx的性能。(max_children equest_terminate_timeout等)

    如果您有更好的优化方案,可以分享一下~ QQ: 251004262 欢迎转载~

  • 相关阅读:
    前端性能优化-全链路质量监控体系建设
    前端性能优化-研发开发流程优化
    一次VLAN标签引发的网络事件的处置
    2001
    SpringBoot定时任务
    在el-dialog中使用ref找不到元素?
    el-table使用checkbox时,获取选中数据的id?
    SpringBoot邮件发送
    表单中el-select和el-input的长度不一致?
    element-ui如何修改el-dialog的样式?
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15113714.html
Copyright © 2011-2022 走看看