Ubuntu/Linux TCP 参数优化 解决 TIME_WAIT 过多

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

 

想要让服务器获得更高的性能,需要对一些内核参数做出调整。

完整参数信息:man 7 tcp

修改 /etc/sysctl.conf,添加如下参数设置。
# 当 SYN 等待队列溢出时,启用 cookie。
net.ipv4.tcp_syncookies = 1

# 允许 TIME_WAIT socket 重用。
net.ipv4.tcp_tw_reuse= 1

# 快速回收 TIME_WAIT socket。
net.ipv4.tcp_tw_recycle= 1

# FIN_WAIT 超时时间。
net.ipv4.tcp_fin_timeout = 30

# 启用 keepalive 时,发送消息的频率。(默认: 7200 秒)
net.ipv4.tcp_keepalive_time = 1800

# 用于外连的端口范围。(默认: 32768 到 61000)
net.ipv4.ip_local_port_range= 10000 65000

# SYN 队列长度。(默认: 1024)
net.ipv4.tcp_max_syn_backlog = 8192
修改完成后执行如下命令生效。
$ sudo sysctl -p

 

也可以用一下命令:
cd /proc/sys/net/ipv4 
echo 1 > tcp_tw_recycle

猜你喜欢

转载自liming495.iteye.com/blog/2002479