未来往事
linux TIME-WAIT相关参数:
net.ipv4.tcp_tw_reuse = 0    表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 0  表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_syncookies = 0   表示关闭SYN Cookies。
PS:/sbin/sysctl -a可以查看Linux各项内核参数

修改TIME-WAIT相关参数配置:
#vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

让配置修改即刻生效
#/sbin/sysctl -p
注意:
1. tw_reuse,tw_recycle 必须在客户端和服务端timestamps 开启时才管用(默认打开)
2. tw_reuse 只对客户端起作用,开启后客户端在1s内回收
3. tw_recycle 对客户端和服务器同时起作用,开启后在 3.5*RTO 内回收,RTO 200ms~ 120s 具体时间视网络状况。内网状况比tw_reuse 稍快,公网尤其移动网络大多要比tw_reuse 慢,优点就是能够回收服务端的TIME_WAIT数量


查看服务器的TCP连接状态:
#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(或#netstat -ntu|awk -F '[ :]+' '/^tcp/{arr[$8]++}END{for(key in arr){print arr[key],key}}'|sort -rn -k1)
TIME_WAIT 71
CLOSE_WAIT 1
FIN_WAIT1 3
FIN_WAIT2 12
ESTABLISHED 186
PS:处于TIME_WAIT状态的sockets从原来的600多减少到70左右。处于SYN_RECV等待处理状态的sockets为0。

合理的优化linux系统内核参数可以提高服务器的并发 负载处理能力、可用率。如本文的优化可以有效降低因TIME_WAIT连接引起的网络故障。
作者:Rinald @『未来往事 | 记录生活,存储回忆!
原文地址:http://fity.cn/post/597/
本站采用「署名 4.0 国际(CC BY 4.0)」创作共享协议。通俗地讲,只要在使用时署名,那么使用者可以对本站所有原创内容进行转载、节选、混编、二次创作,允许商业性使用。除非在文章正文内单独说明,本站欢迎各种形式的转载。互联网技术更新很快,本站很多文章都具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请大家在转载时保留此出处信息。
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮(电子邮件地址不会被公开, 仅用于接收评论回复提醒使用)
OpenID登入 权限选项 表情