涉及time_wait参数

文章讨论了Linux中如何处理TIME-WAIT状态的连接,强调了SO_REUSEADDR和tcp_tw_recycle的区别。后者虽然能复用TIME-WAIT,但存在潜在问题,且在4.12版本后不推荐使用。net.ipv4.tcp_max_tw_buckets控制TIME-WAIT套接字的数量。
摘要由CSDN通过智能技术生成
  • net.ipv4.tcp_tw_reuse

    开启 SO_REUSEADDR 选项或者配置 net.ipv4.tcp_tw_reuse 为 1 后,Linux 将可以复用处于 TIME-WAIT 状态的连接。前面我们说到,TIME-WAIT 状态存在的目的一是为了避免在新连接上收到旧连接的数据,二是为了确保被动关闭方正确关闭连接,那么我们开启 SO_REUSEADDR 复用连接不是一切回到原点了吗?这一切都是 TCP 时间戳选项的功劳。

  • net.ipv4.tcp_tw_recycle

    net.ipv4.tcp_tw_recycle 配置为 1 会开启系统对 TIME-WAIT 状态的 socket 的快速回收。
    net.ipv4.tcp_tw_recycle 同样利用 TCP 的时间戳选项来优化 TIME-WAIT:Linux 每收到一个远端(IP)的数据包,都记录它的时间戳。当处于 TIME-WAIT 状态的 socket 收到的同一远端的数据包时间戳小于记录值,Linux 直接丢弃该数据包并回收 socket。
    但是,net.ipv4.tcp_tw_recycle 并不被推荐(Linux 从 4.12 内核版本开始移除了 tcp_tw_recycle 配置),它可能会导致很多难以排查的古怪问题。特别是服务器或者客户端在 NAT 网络中,多个服务器或客户端共用 NAT 设备的时间戳,数据包可能会被丢弃。

  • ​ net.ipv4.tcp_max_tw_buckets
    表示系统同时保持 TIME-WAIT 套接字的最大数量,如果超过这个数字,TIME-WAIT 套接字将立刻被清除并打印警告信息。默认值为180000。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值