• 101) nginx优化参数


    优化的几个维度:

    1. cpu
    2. 进程连接
    3. 缓存
    4. 文件打开
    5. gzip 传输压缩

    1- nginx优化参数

    1. worker_processes 8;

      nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数。

    2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

      为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一
      个进程分配到多个cpu。

    3. worker_rlimit_nofile 102400;

      这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文
      件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

    4. use epoll;

      使用epoll 的I/O 模型。Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模

      型,而Apache则使用的是传统的select模型。
      处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。
      在高并发服务器中,轮询I/O是最耗时间的操作 目前Linux下能够承受高并发

      访问的Squid、Memcached都采用的是epoll网络I/O模型。

    5. worker_connections 102400;

      每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections。

    6. keepalive_timeout 60;

      keepalive 超时时间。

    7. client_header_buffer_size 4k;

      客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求
      头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。

    8. open_file_cache max=102400 inactive=20s;

      这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

    9. open_file_cache_valid 30s;

      这个是指多长时间检查一次缓存的有效信息。

    10. open_file_cache_min_uses 1;

      open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。

    11. 开启gzip: (压缩传输文件的大小)

    gzip on;
    gzip_min_length 1k; ## 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
    gzip_buffers 4 16k; #
    gzip_http_version 1.0;
    gzip_comp_level 2; ## gzip 压缩级别 1-10 
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;  # 进行压缩的文件类型。
    
    
    gzip_vary on; #  # 是否在http header中添加Vary: Accept-Encoding,建议开启
    
    
    1. 缓存静态文件:
    location ~* ^.+.(swf|gif|png|jpg|js|css)$ {
    root /usr/local/ku6/ktv/show.ku6.com/;
    expires 1m;
    }
    

    2- 配合的内核优化参数

    1. net.ipv4.tcp_max_tw_buckets = 6000

      timewait 的数量,默认是180000。

    2. net.ipv4.ip_local_port_range = 1024 65000

      允许系统打开的端口范围。

    3. net.ipv4.tcp_tw_recycle = 1

      启用timewait 快速回收。

    4. net.ipv4.tcp_tw_reuse = 1

      开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。

    5. net.ipv4.tcp_syncookies = 1

      开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。

    6. net.core.somaxconn = 262144

      web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

    7. net.core.netdev_max_backlog = 262144

      每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

    8. net.ipv4.tcp_max_orphans = 262144

      系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

    9. net.ipv4.tcp_max_syn_backlog = 262144

      记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。

    10. net.ipv4.tcp_timestamps = 0

      时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

    11. net.ipv4.tcp_synack_retries = 1

      为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

    12. net.ipv4.tcp_syn_retries = 1

      在内核放弃建立连接之前发送SYN 包的数量。

    13. net.ipv4.tcp_fin_timeout = 1

      如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。

    14. net.ipv4.tcp_keepalive_time = 30

      当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。

  • 相关阅读:
    DEDECMS里面DEDE函数解析
    dede数据库类使用方法 $dsql
    DEDE数据库语句 DEDESQL命令批量替换 SQL执行语句
    织梦DedeCms网站更换域名后文章图片路径批量修改
    DSP using MATLAB 示例 Example3.12
    DSP using MATLAB 示例 Example3.11
    DSP using MATLAB 示例 Example3.10
    DSP using MATLAB 示例Example3.9
    DSP using MATLAB 示例Example3.8
    DSP using MATLAB 示例Example3.7
  • 原文地址:https://www.cnblogs.com/lemanlai/p/13794542.html
Copyright © 2020-2023  润新知