• 轻量级HTTP服务器Nginx(Nginx性能优化技巧)



    一、编译安装过程优化
    1. 减小 Nginx 编译后的文件大小
    在编译 Nginx 时,默认以 debug 模式进行,而在 debug 模式下
    会插入很多跟踪和 ASSERT 之类的信息,编译完成后,一个 Nginx
    要有好几兆字节。在编译前取消 Nginx 的 debug 模式,编译完成后
    Nginx 只有几百千字节,因此可以在编译之前,修改相关源码,取消
    debug 模式,具体方法如下 :
    在 Nginx 源码文件被解压后,找到源码目录下的 auto/cc/gcc 文
    件,在其中找到如下几行 :
    # debug
    CFLAGS=”$CFLAGS -g”
    注释掉或删掉这两行,即可取消 debug 模式。
    2. 为特定的 CPU 指定 CPU 类型编译优化
    在编译 Nginx 时,默认的 GCC 编译参数是“-O”,要优化 GCC 编
    译,可以使用以下两个参数 :
    --with-cc-opt='-O3'
    --with-cpu-opt=CPU # 为特定的 CPU 编译,有效的值包括 :
    pentium, pentiumpro, pentium3, pentium4, athlon,
    opteron, amd64, sparc32, sparc64, ppc64
    要确定 CPU 类型,可以通过如下命令 :
    #cat /proc/cpuinfo | grep "model name"
    二、利用 TCMalloc 优化 Nginx 的性能
    参考:
    https://blog.csdn.net/ChenVast/article/details/72866435
    三、Nginx 内核参数优化
    内核参数的优化,主要是在 Linux 系统中针对 Nginx 应用而进行
    的系统内核参数优化,常见的优化参数值如下。
    下面给出一个优化实例以供参考 :
    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.core.somaxconn = 262144
    net.core.netdev_max_backlog = 262144
    net.ipv4.tcp_max_orphans = 262144
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    将上面的内核参数值加入 /etc/sysctl.conf 文件中,然后执行如
    下命令使之生效 :
    [home]#/sbin/sysctl -p
    下面是对实例中选项的含义进行介绍 :
    net.ipv4.tcp_max_tw_buckets 参数用来设定 timewait 的数
    量,默认是 180000,这里设为 6000。
    net.ipv4.ip_local_port_range 选项用来设定允许系统打开的端
    口范围。
    net.ipv4.tcp_tw_recycle 选项用于设置启用 timewait 快速回
    收。
    net.ipv4.tcp_tw_reuse 选项用于设置开启重用,允许将 TIME-
    WAIT sockets 重新用于新的 TCP 连接。
    net.ipv4.tcp_syncookies 选项用于设置开启 SYN Cookies,当
    出现 SYN 等待队列溢出时,启用 cookies 进行处理。
    net.core.somaxconn 选项默认值是 128, 这个参数用于调节系
    统同时发起的 tcp 连接数,在高并发的请求中,默认的值可能会导致
    链接超时或者重传,因此,需要结合并发请求数来调节此值。
    net.core.netdev_max_backlog 选项表示当每个网络接口接收
    数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据
    包的最大数目。
    net.ipv4.tcp_max_orphans 选项用于设定系统中最多有多少个
    TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数
    字,孤立连接将立即被复位并打印出警告信息。这个限制只是为了防
    止简单的 DoS 攻击。不能过分依靠这个限制甚至人为减小这个值,
    更多的情况是增加这个值。
    net.ipv4.tcp_max_syn_backlog 选项用于记录那些尚未收到客
    户端确认信息的连接请求的最大值。对于有 128MB 内存的系统而
    言,此参数的默认值是 1024,对小内存的系统则是 128。
    net.ipv4.tcp_synack_retries 参数的值决定了内核放弃连接之
    前发送 SYN+ACK 包的数量。
    net.ipv4.tcp_syn_retries 选项表示在内核放弃建立连接之前发
    送 SYN 包的数量。
    net.ipv4.tcp_fin_timeout 选 项 决 定 了 套 接 字 保 持 在 FIN-
    WAIT-2 状态的时间。默认值是 60 秒。正确设置这个值非常重要,
    有时候即使一个负载很小的 Web 服务器,也会出现因为大量的死套
    接字而产生内存溢出的风险。
    net.ipv4.tcp_keepalive_time 选项表示当 keepalive 启用的时
    候,TCP 发送 keepalive 消息的频度。默认值是 2(单位是小时)。 
  • 相关阅读:
    div 水平居中 内容居左
    net core 踩坑记录
    正向代理和反向代理
    NOIP2013 | 货车运输
    【转载】字符串Hash & 【题解】好文章
    cqyz oj | 帮助Jimmy | DAG图
    cqyz oj | 猜序列
    转载 | 原码, 反码, 补码 详解
    cqyz oj | 有线电视网
    cqyz oj | 罕见的秩序 | 拓扑排序
  • 原文地址:https://www.cnblogs.com/steven9898/p/11309512.html
Copyright © 2020-2023  润新知