• 使用Nginx的必备软件以及Linux内核参数的优化


    Linux操作系统:需要内核为Linux2.6及以上版本的操作系统。使用uname -a命令来查询Linux内核版本。

    操作系统上面至少安装了如下软件
    1、GCC编译器(可用来编译C语言程序)
    yum install -y gcc
    2、PCRE库(perl兼容正则表达式)。如果在配置文件nginx.conf里使用了正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx,因为Nginx的HTTP模块要靠它来解析正则表达式。如果不会使用正则表达式,就不需要安装。
    yum install -y pcre pcre-devel
    3、zlib库(用于对HTTP包的内容做gzip格式的压缩)。如果在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量,那么在编译时就必须把zlib编译进Nginx。
    yum install -y zlib zlib-devel
    4、OpenSSL开发库。如果服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了,安装之后也可以使用MD5、SHA1等散列函数。
    yum install -y openssl openssl-devel

    Nginx是高度自由化的web服务器,它的功能是由许多模块来支持的。根据使用需求来选择是否安装。

    需要在Linux中准备的磁盘目录
    1、Nginx源代码存放目录:存放Nginx源码文件以及第三方或者我们自己写的模块源代码文件。
    2、Nginx编译阶段产生的中间文件存放目录:存放configure命令执行后所产生的源代码文件及目录,以及make命令执行后生成的目标文件和最终连接成功的二进制文件。默认情况下,configure命令会将该目录命名为objs,并放在Nginx源代码目录下。
    3、部署目录:存放实际Nginx服务允许期间所需要的二进制文件、配置文件等。默认情况下,该目录为/usr/local/nginx。
    4、日志文件存放目录:日志文件通常会比较大,当研究Nginx的底层架构时,需要打开debug级别的日志,这个级别的日志非常详细,会导致日志文件的大小增长得几块,需要预先分配一个拥有更大磁盘空间的目录。

    Linux内核参数的优化
    因为Linux默认的内核参数考虑的时最通用的场景,但这不符合用于支持高并发访问的web服务器,所以需要根据业务特点(将Nginx作为静态web内容服务器、反向代理服务器或者是提供图片缩略图实时压缩图片的服务器)来修改Linux内核参数,使得Nginx可以拥有更高的性能。
    需要修改/etc/sysctl.conf来更改内核参数
    最常用的配置:
    fs.file_max = 999999
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_max_tw_buckets = 5000
    net.ipv4.ip_local_port_range = 1024 61000
    net.ipv4.tcp_rmen = 4096 32768 262142
    net.ipv4.tcp_wmen = 4096 32768 262142
    net.ipv4.tcp_max_syn_backlog = 1024
    net.core.rmen_default = 262144
    net.core.wmen_default = 262144
    net.core.rmen_max = 2097152
    net.core.wmen_max = 2097152
    net.ipv4.tcp_syncookies = 1
    然后执行sysctl -p命令,使上述修改生效。
    file_max:表示进程(例如一个worker进程)可以同时打开的最大句柄数,这个参数直接限制最大并发连接数,需要根据实际情况配置。
    tcp_tw_reuse:这个参数设置为1,表示允许将TIME-WAIT状态socket重新用于新的TCP连接,这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。
    tcp_keepalive_time:这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置得小一点,可以更快地清理无效的连接。
    tcp_fin_timeout :这个参数表示当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间。
    tcp_max_tw_buckets:这个参数表示操作系统允许TIME-WAIT套接字数量的最大值,如果超过这个数字,TIME-WAIT套接字将立刻被清除并打印警告消息。该参数默认是180000,过多的TME-WAIT套接字会使web服务器变慢。
    tcp_max_syn_backlog:这个参数表示TCP三次握手建立阶段接收SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现nginx繁忙来不及accept新链接的情况时,Linux不至于丢失客户端发起的连接请求。
    ip_local_port_range:这个参数定义了在UDP和TCP连接中本地(不包括连接的远端)端口就得取值范围。
    tcp_rmen:这个参数定义了TCP接收缓存(用于TCP接收滑动窗口)的最小值、默认值、最大值。
    tcp_wmen:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。
    rmen_default:这个参数表示内核套接字接收缓存区默认的大小。
    wmen_default:这个参数表示内核套接字发送缓存区默认的大小。
    rmen_max:这个参数表示内核套接字接收缓存区最大大小。
    wmen_max:这个参数表示内核套接字发送缓存区最小大小。
    tcp_syncookies:该参数与性能无关,用于解决TCP的SYN攻击。

    获取Nginx源码
    在官网上获取http://nginx.org/en/download.html。将下载的源码压缩包放置到准备好的Nginx源代码目录中,然后解压。
    编译安装Nginx,进入解压目录后执行以下3行命令
    ./configure
    make
    make install
    configure命令做的工作包括检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。
    make命令根据configure命令生成的Makefile文件编译成Nginx工程,并生成目标文件、最终的二进制文件。
    make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。

    configure的命令参数(太多了,就不一一列举出来了)
    1、路径相关参数
    2、编译相关参数
    3、依赖软件的相关参数
    4、模块相关的参数
    5、其他参数

  • 相关阅读:
    第09组 Alpha冲刺(3/4)
    第09组 Alpha冲刺(2/4)
    第09组 Alpha冲刺(1/4)
    数值分析——多项式插值之Lagrange插值
    Deepin下安装搭建latex编写环境
    Deepin下安装Matlab2017a永久版
    数学建模方法-遗传算法(实战篇part 2)
    数学建模方法-遗传算法(实战篇part 1)
    数学建模方法-遗传算法(理论篇)
    Deepin系统下MATLAB中文字体乱码问题解决(加上字体美化)
  • 原文地址:https://www.cnblogs.com/xsl1995/p/10410945.html
Copyright © 2020-2023  润新知