Linux网络编程---解决TIME_WAIT状态引起的bind失败的方法

好几天都没写博客了,感觉落后了别人一大截,今天赶紧来补补。废话不多说,直接进入正题。

首先我们得明白,有些情况下,在server的TCP连接没有完全断开之前是不允许重新监听可能是不合理的
例如:

  • 服务器需要处理非常大量的客户端的连接(每个连接的生存时间可能很短, 但是每秒都有很大数量的客户端来请求). 这个时候如果由服务器端主动关闭连接(比如某些客户端不活跃, 就需要被服务器端主动清理掉), 这时服务端就会产生大量TIME_WAIT连接.
  • 由于我们的请求量很⼤大, 就可能导致TIME_WAIT的连接数很多, 导致服务器的端口不够用, 无法处理新的连接.

Time_Wait状态

我们之前在讲TCP三次握手和四次挥手的时候,主动关闭连接的一方会进入Time_Wait状态。但有时侯在非正常的情况下,哪一方的进程退出,也是会导致连接关闭的,这时主动方如果是客户端主动关闭连接,那么他会进入Time_Wait状态,让他等一会是没什么影响的。但通常情况下,我们的服务器应该是7*24小时不间断工作的,想想百度或腾讯的服务器,它要每天处理大量的客户端的请求,如果某时刻由于某种原因挂掉了,那么这时服务器就会进入Time_Wait 状态,这个时服务器在Time_Wait的状态是不可以重启的,因为它虽然准备关闭了,但还是没有进行完四次挥手,也就是说他还占用着之前的端口,所以重启是起不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值