如何对Linux内核参数进行优化?

服务器

浏览数:58

2019-10-13

AD:资源代下载服务

打开配置文件

vi /etc/sysctl.conf

输入配置,如下是内核优化的参数

# TCP三次握手建立阶段接收SYN请求队列的最大长度,默认为1024(将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求)        
net.ipv4.tcp_max_syn_backlog = 65536 
# 数据包队列的最大值(当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包)
net.core.netdev_max_backlog = 32768 
# 每一个端口最大的监听队列的长度,默认值为128
net.core.somaxconn = 32768 

# 内核套接字发送缓冲区默认的大小
net.core.wmem_default = 262144 
# 内核套接字发送缓冲区最大大小
net.core.wmem_max = 2097152
# 内核套接字接收缓冲区默认的大小
net.core.rmem_default = 262144 
# 内核套接字接收缓冲区最大大小
net.core.rmem_max = 2097152

# TCP接收缓存(用于TCP接收滑动窗口)的最小值、默认值、最大值
net.ipv4.tcp_rmem = 4096 32768 262142 
# TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 32768 262142  
# TCP的内存大小,其单位是页,1页等于4096字节,系统默认值:cat /proc/sys/net/ipv4/tcp_mem
net.ipv4.tcp_mem=94500000 915000000 927000000
# 系统所能处理不属于任何进程的TCP sockets最大数量
net.ipv4.tcp_max_orphans=3276800

# 当服务器主动关闭连接时,socket保持在FIN-WAIT-2状态的最大时间
net.ipv4.tcp_fin_timeout = 30 
# 当keepalive启用时,TCP发送keepalive消息的频度(若将其设置得小一些,可以更快清理无效的连接)
net.ipv4.tcp_keepalive_time = 120 
# 在UDP和TCP连接中本地端口的取值范围
net.ipv4.ip_local_port_range = 1024 61000 


# 限制进程最大并发连接数,根据实际情况配置
fs.file-max = 65536
# 操作系统允许TIME-WAIT套接字数量的最大值,默认为180000(过多的TIME-WAIT套接字会使Web服务器变慢)
net.ipv4.tcp_max_tw_buckets = 5000
# 用于解决TCP的SYN攻击
net.ipv4.tcp_syncookies = 1

#开启TCP时间戳,以一种比重发超时更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项
net.ipv4.tcp_timestamps = 1;
#决定内核在放弃连接之前所送出的 SYN+ACK 数目
net.ipv4.tcp_synack_retries = 1;
#在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1;

# 允许将TIME-WAIT状态的socket重新用于新的TCP连接
net.ipv4.tcp_tw_recycle = 1
# 允许将TIME-WAIT状态的socket重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1

更新配置命令

sysctl -p

作者:果然朝辉