首页 » 网站建设 » phpsockettimewait技巧_socket编程time_wait

phpsockettimewait技巧_socket编程time_wait

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

a.可靠地实现tcp全双工连接的终止,在进行关闭连接四次挥手协议时,末了的ack是由主动关闭端发出的,如果这个终极的ack丢失做事器将重发终极的fin,因此客户端必须掩护状态信息许可它重发终极的ack,如果不坚持这个状态信息,那么客户端将相应rst分节,做事器将此分节阐明成一个缺点,因而要实现tcp全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节丢失的情形,主动关闭的客户端必须坚持状态信息进入time_wait状态。

b.许可老的重复分节在网络中消逝,tcp分节可能由于路由器非常而迷途,在迷途期间,tcp发送端可能因确认超时而重发这个分节,迷途的分节在路由器修复后也会被送到终极的目的地,这个原来迷途的分节就称为lost duplicate。
在关闭一个tcp连接后,立时又重新建立起一个相同的ip地址和端口之间的tcp连接,后一个连接被称为前一个连接的化身,那么有可能涌现这种情形,前一个连接的迷途重复分组在前一个连接终止后涌现,从而被误解成从属于新的化身。
为了避免这个情形,tcp不许可处于time_wait状态的连接启动一个新的化身,因此time_wait状态坚持连续2MSL,就可以担保当建立一个tcp连接的时候,来自连接先前化身的重复分组已经在网络中消逝。

phpsockettimewait技巧_socket编程time_wait

2.大量time_wait造成的影响

phpsockettimewait技巧_socket编程time_wait
(图片来自网络侵删)

在高并发短连接的tcp做事器上,当做事器处理完要求后急速主动正常关闭连接,这个场景下会涌现大量socket处于time_wait状态,如果客户真个并发量持续很高,此时部分客户端就会显示连接不上。
主动正常关闭tcp连接,都会涌现time_wait。

为什么我们要关注这个高并发短连接呢,有两个方面须要把稳。

1.高并发可以让做事器在短韶光范围内同时占用大量端口,而端口有个0~35535的范围,并不是很多。

2.在这个场景下,短连接表示 业务处理+传输数据的韶光 远远小于time_wait超时的韶光

总结:长连接不须要考虑time_wait状态,持续的到达一定量的高并发短连接,会使做事器因端口资源不敷而谢绝为一部分客户做事,同时这些端口都是做事器临时分配的,无法用so_reuseaddr选项办理这个问题。

关于time_wait的反思:

存在即合理,既然tcp协议能盛行四十多年就证明它的设计合理性,以是我们尽可能的利用其原来功能依赖time_wait状态来担保我的做事器程序健壮,做事功能正常。
可以采取负载均衡来反抗高并发的短要求。

如何只管即便处理time_wait过多?大略来说便是打开系统的time_wait重用和快速回收

编辑内核文件 /etc/sysctl.conf加入以下内容net.ipv4.tcp_syncookies = 1 //表示开启syn cookies 当涌现syn等待对列溢出时,启用cookies来处理net.ipv4.tcp_tw_reuse = 1//表示开启重用 许可time_wait sockets重新用于新的tcp连接net.ipv4.tcp_tw_recycle=1//表示开启tcp连接中time_wait socket的快速回收net.ipv4.tcp_fin_timeout=1 //修正系统默认的timeout韶光

标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读0 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读0 评论0