![](https://csdnimg.cn/release/download_crawler_static/9895964/bg1.jpg)
优化 Linux
Linux
Linux
Linux 的内核参数来提高服务器并发处理能力
PS :在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力
,
是很多运维技术人员思考的问题。要提高 Linux 系统下的负载能力,可以使用 nginx 等原生并发处理
能力就很强的 web 服务器,如果使用 Apache 的可以启用其 Worker 模式,来提高其并发处理能力 。 除
此之外 , 在考虑节省成本的情况下 , 可以修改 Linux 的内核相关 TCP 参数 , 来最大的提高服务器性能
。
当然,最基础的提高负载问题,还是升级服务器硬件了,这是最根本的。
Linux 系统下 , TCP 连接断开后 , 会以 TIME_WAIT 状态保留一定的时间 , 然后才会释放端口 。 当并发
请求过多的时候,就会产生大量的 TIME_WAIT 状态的连接,无法及时断开的话,会占用大量的端口
资源和服务器资源 。 这个时候我们可以优化 TCP 的内核参数 , 来及时将 TIME_WAIT 状态的端口清理
掉。
本文介绍的方法只对拥有大量 TIME_WAIT 状态的连接导致系统资源消耗有效 , 如果不是这种情况下
,
效果可能不明显。可以使用 netstat 命令去查 TIME_WAIT 状态的连接状态,输入下面的组合命令 , 查
看当前 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
我们只用关心 TIME_WAIT 的个数 , 在这里可以看到 , 有 18000 多个 TIME_WAIT , 这样就占用了 18000
多个端口。要知道端口的数量只有 65535 个,占用一个少一个,会严重的影响到后继的新连接。这种
情况下,我们就有必要调整下 Linux 的 TCP 内核参数,让系统更快的释放 TIME_WAIT 连接。
用 vim 打开配置文件: vim /etc/ sysctl.conf
在这个文件中,加入下面的几行内容:
net.ipv4.tcp_syncookies = 1