tcp参数详解之tcp_fin_timeout

转:http://blog.chinaunix.net/uid-23849526-id-287997.html

tcp_fin_timeout :INTEGER

默认值是 60
对于本端断开的socket连接,TCP保持在FIN_WAIT_2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。过去在2.2版本的内核中是 180 秒。您可以设置该值﹐但需要注意﹐如果您的机器为负载很重的web服务器﹐您可能要冒内存被大量无效数据报填满的风险﹐FIN-WAIT-2 sockets 的危险性低于 FIN-WAIT-1 ﹐因为它们最多只吃 1.5K 的内存﹐但是它们存在时间更长。另外参考 tcp_max_orphans

CLOSE_WAIT状态的生成原因
如果服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!

假设CLIENT端主动断掉当前连接,那么双方关闭这个TCP连接共需要四个packet

      Client --->  FIN  --->  Server 

      Client <---  ACK  <---  Server 

 这时候Client端处于FIN_WAIT_2状态;而Server 程序处于CLOSE_WAIT状态。

      Client <---  FIN  <---  Server 

这时Server 发送FINClientServer 就置为LAST_ACK状态。

       Client --->  ACK  --->  Server 

Client回应了ACK,那么Server 的套接字才会真正置为CLOSED状态。

Server 程序处于CLOSE_WAIT状态,而不是LAST_ACK状态,说明还没有发FINClient,那么可能是在关闭连接之前还有许多数据要发送或者其他事要做,导致没有发这个FIN packet

通常来说,一个CLOSE_WAIT会维持至少2个小时的时间。如果有个流氓特地写了个程序,给你造成一堆的CLOSE_WAIT,消耗资源,那么通常是等不到释放那一刻,系统就已经解决崩溃了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值