针对IPv4的内核7个参数的配置优化(linux内核参数配置)
1.net.core.netdev_max_backlog
当每个网络接口接收数据包的速度比内核处理这些包的快,允许发送到队列的数据包的最大数(一般默认128)
2.net.core.somaxconn
用于调节系统同时发起的tcp连接数(一般默认128),如果该值太小,在并发的时候会造成链接超时或者重传问题
3.net.ipv4.tcp_max_orphans
配置系统中最多允许存在多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,没有与用户文件句柄关联TCP套接字将立即被复位,同时给出警告信息
4.net.ipv4.tcp_max_syn_backlog
记录的那些尚未收到客户端确认信息的连接请求的最大值。
5.net.ipv4.tcp_timestamps
设置时间戳,可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
6.net.ipv4.tcp_synack_retries
设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量。为了建立对端的连接服务,服务器和客户端需要进行三次握手,第二次握手期间,内核需要发送SYN并附带一个回应前一个SYN的ACK,一个参数主要影响这个过程,一般赋值为1,即内核放弃连接之前发送一次SYN+ACK包,可以设置其为1
7.net.ipv4.tcp_syn_retries
该参数的作用与上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量,他的赋值和上个参数一样即可
配置完后,要重新加载配置
/sbin/sysctl -p
针对CPU的nginx配置优化的2个指令
1.worker_processes
设置nginx服务器的进程数。可根据cpu的个数和核数的积来设置
2.worker_cpu_affinity
用来为每个工作进程分配cpu的工作内核
查看nginx的cpu亲和度
ps -eo pid,ni,pri,pcpu,psr,comm|grep nginx|awk '{++s[$(NF-1)]}END{for (i in s)print "core-id",i,"\t",s[i]}'|sort -nr -k 3
与网络连接相关的配置的4个指令
1.keepalive_timeout
用于设置客户端连接保存活动的超时时间
2.send_timeout
用于设置nginx服务器响应客户端的超时时间
3.client_header_buffer_size
用于设置nginx服务器允许的客户端请求头部的缓冲区大小(默认1kb)
可通过getconf PAGESIZE获取
4.multi_accept
配置nginx服务器是否尽可能的接收客户端的网络请求(默认off)