优化 Linux 的内核参数来提高服务器并发处理能力
发表于个人日记运维经验 作者谋万世全局者
标签优化内核参数并发处理提高服务器
PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务
器的并发处理能力,是很多运维技术人员思考的问题。要提高 Linux 系统下的负
载能力,可以使用 nginx 等原生并发处理能力就很强的 web 服务器,如果使用
Apache 的可以启用其 Worker 模式,来提高其并发处理能力。除此之外,在考
虑节省成本的情况下,可以修改 Linux 的内核相关 TCP 参数,来最大的提高服
务器性能。当然,最基础的提高负载问题,还是升级服务器硬件了,这是最根本的。
系统下, 连接断开后,会以 状态保留一定的时间,然后
才会释放端口。当并发请求过多的时候,就会产生大量的 状态的连
接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以
优化 的内核参数,来及时将 状态的端口清理掉。
本文介绍的方法只对拥有大量 状态的连接导致系统资源消耗有效,
如果不是这种情况下,效果可能不明显。可以使用 命令去查
状态的连接状态,输入下面的组合命令,查看当前 连接的状态
和对应的连接数量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
这个命令会输出类似下面的结果:
LAST_ACK 16
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18098
我们只用关心 的个数,在这里可以看到,有 多个
,这样就占用了 多个端口。要知道端口的数量只有 !""#"
个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要
调整下 的 内核参数,让系统更快的释放 连接。
用 $ 打开配置文件:#vim /etc/sysctl.conf
在这个文件中,加入下面的几行内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30