1、 什么是time_wait?如何产生的?

1、  什么是time_wait?如何产生的?

 

上状态图:

 

 

从图中可以看到,tcp连接后,在四次握手之后,先发FIN标志位的一端就会进入time_wait状态。

2、  time_wait的类型有哪些?

Time_wait分为两类:主动型time_wait和被动型time_wait

主动型:本机主动与其他服务器建立连接时的time_wait,这种情况下本机产生的随机端口号较多。

 

被动型:本机由于其他服务器主动连接过来后,产生的time_wait。这种情况下,本机ip对应开启的端口号相对固定。

 

3、  不同Time_wait对系统性能的影响。

被动型time_wait一般由于被动建立链接产生的time_wait,这种情况下一般占用的端口号比较少,产生的time_wait数也很少。几乎可以忽略不计,对服务器性能几乎没有任何影响。

主动型time_wait对服务器的影响比较大。因为服务器可利用的端口号是有限的,如果占用达到服务器端口号极限,对服务器的性能就会产生影响。

如何排查问题

4、  查看服务器time数的命令:

netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看服务器可用端口号情况:

cat /proc/sys/net/ipv4/ip_local_port_range

如何减少time_wait数量

vi /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

 

然后执行 /sbin/sysctl -p 让参数生效。

 

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,表示关闭。


net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值