nginx 服务器的高级配置---第四章
2017-04-20 09:44
197 查看
一、针对IPV4的内核7个参数的配置优化
这里提及的参数是IPV4网络有关的Linux内核参数,我们可以将这些内核参数的值追加到linux系统的/etc/sysctl.conf 文件中,然后使用如下命令修改生效:
表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。一般默认值为128.
Nginx 服务器中定义的NGX_LISTEN_BACKLOG默认为512。
net.core.netdev_max_backlog = 262144。
2.net.core.somaxconn参数
该参数用于调节系统同时发起的TCP连接数,一般默认值是128.
在客户端存在高并发请求的情况下,该默认值较小,可能导致连接超时或者重传问题。我们可以根据实际需要结合并发请求数来调节此值。
net.core.somaxconn = 262144
3.net.ipv4.tcp_max_orphans参数
该参数用于设定系统同中最多允许存在对少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,没有与用户文件句柄关联的TCP套接字将立即被修复,同时给出警告信息。
这个参数只是为了防止简单的Dos( Denial of Service ) 攻击.
一般在系统内存比较充足的情况下,可以增大这个参数的赋值:
net.ipv4.tcp_max_orphans = 262144
4.net.ipv4.tcp_max_syn_backlog参数
该参数用于记录尚未收到客户端确认信息的连接请求的最大值。
对于拥有128M内存的系统而言,此参数的默认值是1024,对于小内存的系统则是128,一般在内存比较充足的情况下,可以增加这个参数的赋值:
net.ipv4.tcp_max_syn_backlog= 262144
5.net.ipv4.tcp_timestamps参数
该参数用于设置时间戳,这个可以避免序列号的卷绕。在一个1Gb/s的链路上,遇到以前用过的序列号的概率很大。
当此时赋值为0时,禁用对于TCP事件戳的支持。
在默认情况下,TCP协议会让内核接收这种“异常”的数据包。针对Nginx服务器来说:建议将其关闭:net.ipv4.tcp_timestamps = 0
6.net.ipv4.tcp_synact_retries参数
改参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量。
为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送 SYN 并附带一个回应前
一个SYN的ACK,这个参数主要影响这个过程,一般赋值为1,即内核放弃连接之前发送一次 SYN + ACK 包,可以设置
为 net.ipv4.tcp_synact_retries = 1
7.net.ipv4.tcp_syn_retries参数
该参数的作用于上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量,他的赋值和上一个参数一样即
可:net.ipv4.tcp_syn_retries = 1
二、针对处理器(CPU)的Nginx配置优化的2个指令
1.worker_processes指令
设置Nginx服务的进程数。官方建议设置为1
双核CPU worker_processes = 2;
四核CPU worker_processes = 4;
设置好worker_processes 指令之后,就很有必要设置worker_cpu_affinity指令
2、worker_cpu_affinity指令
该指令用来为每个进程分配CPU的工作内核。
以Nginx服务的进程数为4,CPU是四核:
worker_cpu_affinity 0001 0100 1000 0010
以Nginx服务的进程数为8,CPU是四核:
worker_cpu_affinity 0001 0100 1000 0010 0001 0100 1000 0010
三、针对网络连接的4个指令配置
1、keepalive_timeout
用于设置Nginx服务器与客户端保持连接的超时时间
keepalive_timeout 60 50;
该设置表示Nginx服务器与客户端连接保持活动的时间是60s,60s后服务器与客户端断开连接,使用Keep-Alive消息头保
持与客户端某些浏览器的连接时间为50s,50s后浏览器主动与服务器断开连接。
2、send_timeout
该指令用于设置Nginx服务器响应客户端超时时间,这个超时时间针对两个客户端和服务器端建立连接后,某次活动之间
的时间,如果这个时间后没有任何活动,Nginx服务器将会关闭连接。此指令的设置需要考虑服务器访问数量和网络等方
面。
send_timeout 10s;
该设置表示Nginx服务器与客户端连接后,某次会话中服务器等待客户端响应超过10s,就会自动关闭连接。
3、client_header_buffer_size
该指令用于设置Nginx服务器允许的客户端请求头部的缓冲去大小,默认为1KB。
client_header_buffer_size 4k;
4、multi_accept
该指令用于配置Nginx服务器是否尽可能多的接收客户端的网络连接请求,默认值为off。
四、与事件驱动模型相关的8个指令配置
1.use指令
use指令用于指定Nginx服务器使用的事件驱动模型
2.worker_connections
用于设置Nginx服务器的每个工作进程允许同时连接客户端的最大数量。
语法为:worker_connections number
number 为设置的最大数量
3.worker_rlimit_sigpending
该指令用于设置Linux2.6.6-mm2版本之后Linux平台的事件信号队列长度上限。
语法为:worker_rlimit_sigpendinglimit
limit 为Linux平台事件信号队列的长度上限值。
该指令主要影响事件驱动模型中rtsig模型可以保存最大信号数。
4.devpoll_changes 和devpoll_events
这两个指令用于设置在/dev/poll事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,前者设置传递给内核的事
件数量,后者设置从内核获取的事件数量。
语法为:devpoll_changes number
devpoll_events number
number 为要设置的数量,默认值是512
5.kqueue_changes 和kqueue_events
这两个指令用于设置在kqueue事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,前者设置传递给内核的事件
数量,后者设置从内核获取的事件数量。
语法为:kqueue_changes number
kqueue_events number
number 为要设置的数量,默认值是512
使用kqueue_changes方式,可以设置与内核之间传递事件的数量
6.epoll_events
用于设置在epoll事件驱动下Nginx 服务器可以与内核之间传递事件的数量。
语法为:epoll_changesnumber
[b]number [/b]为要设置的数量,默认值是512
7.rtsig_signo
该指令用于设置rtsig模式使用的两个信号中的第一个,第二个信号是在第一个信号的编号上加1。
语法为:rtsig_signo
默认第一个信号设置为SIFRTMIN + 10
8.rtsig_overflow_*
该指令代表三个具体的指令,分别为rtsig_overflow_events指令、rtsig_overflow_test指令、rtsig_overflow_threshold指
令。
这些指令用来控制当rtsig模式中信号队列溢出时Nginx服务器的处理方式。
语法为: rtsig_overflow_* number
number 是要设定的值。
rtsig_overflow_events 指令指定队列溢出时使用poll库处理的事件数,默认值为16.
rtsig_overflow_test指令指定poll库处理完第几件事件后将清空rtsig模型使用的信号队列,默认值为32.
rtsig_overflow_threshold 指令指定rtsig 模式使用的信号队列中的事件超过多少时就需要清空队列了。该指令只对Linux
2.4x及以下版本有效,
这里提及的参数是IPV4网络有关的Linux内核参数,我们可以将这些内核参数的值追加到linux系统的/etc/sysctl.conf 文件中,然后使用如下命令修改生效:
#/sbin/sysctl -p1.net.core.netdev_max_backlog参数
表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。一般默认值为128.
Nginx 服务器中定义的NGX_LISTEN_BACKLOG默认为512。
net.core.netdev_max_backlog = 262144。
2.net.core.somaxconn参数
该参数用于调节系统同时发起的TCP连接数,一般默认值是128.
在客户端存在高并发请求的情况下,该默认值较小,可能导致连接超时或者重传问题。我们可以根据实际需要结合并发请求数来调节此值。
net.core.somaxconn = 262144
3.net.ipv4.tcp_max_orphans参数
该参数用于设定系统同中最多允许存在对少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,没有与用户文件句柄关联的TCP套接字将立即被修复,同时给出警告信息。
这个参数只是为了防止简单的Dos( Denial of Service ) 攻击.
一般在系统内存比较充足的情况下,可以增大这个参数的赋值:
net.ipv4.tcp_max_orphans = 262144
4.net.ipv4.tcp_max_syn_backlog参数
该参数用于记录尚未收到客户端确认信息的连接请求的最大值。
对于拥有128M内存的系统而言,此参数的默认值是1024,对于小内存的系统则是128,一般在内存比较充足的情况下,可以增加这个参数的赋值:
net.ipv4.tcp_max_syn_backlog= 262144
5.net.ipv4.tcp_timestamps参数
该参数用于设置时间戳,这个可以避免序列号的卷绕。在一个1Gb/s的链路上,遇到以前用过的序列号的概率很大。
当此时赋值为0时,禁用对于TCP事件戳的支持。
在默认情况下,TCP协议会让内核接收这种“异常”的数据包。针对Nginx服务器来说:建议将其关闭:net.ipv4.tcp_timestamps = 0
6.net.ipv4.tcp_synact_retries参数
改参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量。
为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送 SYN 并附带一个回应前
一个SYN的ACK,这个参数主要影响这个过程,一般赋值为1,即内核放弃连接之前发送一次 SYN + ACK 包,可以设置
为 net.ipv4.tcp_synact_retries = 1
7.net.ipv4.tcp_syn_retries参数
该参数的作用于上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量,他的赋值和上一个参数一样即
可:net.ipv4.tcp_syn_retries = 1
二、针对处理器(CPU)的Nginx配置优化的2个指令
1.worker_processes指令
设置Nginx服务的进程数。官方建议设置为1
双核CPU worker_processes = 2;
四核CPU worker_processes = 4;
设置好worker_processes 指令之后,就很有必要设置worker_cpu_affinity指令
2、worker_cpu_affinity指令
该指令用来为每个进程分配CPU的工作内核。
以Nginx服务的进程数为4,CPU是四核:
worker_cpu_affinity 0001 0100 1000 0010
以Nginx服务的进程数为8,CPU是四核:
worker_cpu_affinity 0001 0100 1000 0010 0001 0100 1000 0010
三、针对网络连接的4个指令配置
1、keepalive_timeout
用于设置Nginx服务器与客户端保持连接的超时时间
keepalive_timeout 60 50;
该设置表示Nginx服务器与客户端连接保持活动的时间是60s,60s后服务器与客户端断开连接,使用Keep-Alive消息头保
持与客户端某些浏览器的连接时间为50s,50s后浏览器主动与服务器断开连接。
2、send_timeout
该指令用于设置Nginx服务器响应客户端超时时间,这个超时时间针对两个客户端和服务器端建立连接后,某次活动之间
的时间,如果这个时间后没有任何活动,Nginx服务器将会关闭连接。此指令的设置需要考虑服务器访问数量和网络等方
面。
send_timeout 10s;
该设置表示Nginx服务器与客户端连接后,某次会话中服务器等待客户端响应超过10s,就会自动关闭连接。
3、client_header_buffer_size
该指令用于设置Nginx服务器允许的客户端请求头部的缓冲去大小,默认为1KB。
client_header_buffer_size 4k;
4、multi_accept
该指令用于配置Nginx服务器是否尽可能多的接收客户端的网络连接请求,默认值为off。
四、与事件驱动模型相关的8个指令配置
1.use指令
use指令用于指定Nginx服务器使用的事件驱动模型
2.worker_connections
用于设置Nginx服务器的每个工作进程允许同时连接客户端的最大数量。
语法为:worker_connections number
number 为设置的最大数量
3.worker_rlimit_sigpending
该指令用于设置Linux2.6.6-mm2版本之后Linux平台的事件信号队列长度上限。
语法为:worker_rlimit_sigpendinglimit
limit 为Linux平台事件信号队列的长度上限值。
该指令主要影响事件驱动模型中rtsig模型可以保存最大信号数。
4.devpoll_changes 和devpoll_events
这两个指令用于设置在/dev/poll事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,前者设置传递给内核的事
件数量,后者设置从内核获取的事件数量。
语法为:devpoll_changes number
devpoll_events number
number 为要设置的数量,默认值是512
5.kqueue_changes 和kqueue_events
这两个指令用于设置在kqueue事件驱动模式下Nginx服务器可以与内核之间传递事件的数量,前者设置传递给内核的事件
数量,后者设置从内核获取的事件数量。
语法为:kqueue_changes number
kqueue_events number
number 为要设置的数量,默认值是512
使用kqueue_changes方式,可以设置与内核之间传递事件的数量
6.epoll_events
用于设置在epoll事件驱动下Nginx 服务器可以与内核之间传递事件的数量。
语法为:epoll_changesnumber
[b]number [/b]为要设置的数量,默认值是512
7.rtsig_signo
该指令用于设置rtsig模式使用的两个信号中的第一个,第二个信号是在第一个信号的编号上加1。
语法为:rtsig_signo
默认第一个信号设置为SIFRTMIN + 10
8.rtsig_overflow_*
该指令代表三个具体的指令,分别为rtsig_overflow_events指令、rtsig_overflow_test指令、rtsig_overflow_threshold指
令。
这些指令用来控制当rtsig模式中信号队列溢出时Nginx服务器的处理方式。
语法为: rtsig_overflow_* number
number 是要设定的值。
rtsig_overflow_events 指令指定队列溢出时使用poll库处理的事件数,默认值为16.
rtsig_overflow_test指令指定poll库处理完第几件事件后将清空rtsig模型使用的信号队列,默认值为32.
rtsig_overflow_threshold 指令指定rtsig 模式使用的信号队列中的事件超过多少时就需要清空队列了。该指令只对Linux
2.4x及以下版本有效,
相关文章推荐
- nginx 服务器的高级配置---第四章
- 第四章 Nginx服务器的高级配置
- Windows中IIS内FTP服务器高级配置图文教程
- Nginx的浏览器/服务器双向SSL证书认证配置
- windows 2003 传真服务器高级配置与管理
- 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解
- Centos 5.3 Nginx+php+mysql配置 独立的 Subversion (SVN)服务器
- 服务器安全配置技巧--高级篇
- 配置Nginx服务器虚拟目录
- 20个配置安全Nginx Web服务器的方法
- 处理WIN2003服务器IIS被挂马全过程(配置文件高级挂马)
- 实现php&nginx服务器配置的非主流配置方法
- Solaris服务器配置高级入侵检测工具AIDE
- Windows中IIS内FTP服务器高级配置
- 中小企业服务器配置方案(第四章 邮件服务器)
- vsftpd服务器的四大高级配置
- Windows中IIS内FTP服务器高级配置
- 在Nginx服务器中做IE8兼容性配置
- Centos 5.3 Nginx+php+mysql配置 独立的 Subversion (SVN)服务器
- 在nginx中配置如何防止直接用ip访问服务器web server及server_name特性讲解