您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

服务器海量TCP连接如何高效保活?

时间:2020-06-21 17:01:03  来源:  作者:

在互联网领域,客户端和服务端之间通常需要建立和保持TCP长连接。所谓长连接,就是通信双方在建立TCP连接后进行数据通信,一次或若干次通信交互完成之后,不主动断开连接,而是保持TCP连接不释放,在随时需要通信的时候,不再需要重新建立连接。长连接可以提高通信速度、确保实时性、避免短时间内重复连接所造成的网络资源浪费,例如:即时通信,物联网等应用场景。对于服务器来说,接入和保持海量的客户端长连接,需要付出大量的服务器资源(网络、内存、CPU、文件句柄等)。由于很多客观原因(例如网络环境、客户端本身出现故障等),双方会建立一些无效的连接,既没有有效的数据通信,又不会主动关闭,称之为“死”连接。为了提高服务器资源的利用率,需要将“死”连接主动关闭释放资源,这就是心跳保活机制。所谓心跳保活,就是在通信过程中,通信双方定期给对方发送心跳包(一种特殊的数据报文),表示发送方还存活着。服务器收到客户端定期发送的心跳包之后,就认为客户端还活着,反之,如果超过规定时间内没有收到心跳包,则认为客户端已“死”,需要将TCP连接关闭。因此,服务端需要管理所有客户端连接会话,记录所有会话的超时时间,定期把超时的会话连接进行清除。

如何定期把超时的会话清除,如何将有数据通信的活跃连接的会话进行保持?

一种简单和常用的实现方法是在每次客户端连接建立的时候,就设置一个定时器和该TCP连接关联,该定时器在指定超时时间到达之后会关闭该关联的TCP连接。如果在该定时器超时时间到达之前,关联的TCP连接链路有数据通信,则重置定时器的超时时间。这种方法可以非常精确设置每一个TCP连接保活的超时时间。但是当客户端接入数量达到海量的时候,该方法会产生大量的定时器任务,对于每一次客户端连接,都要产生一个对应的定时任务,定时任务的数量等于客户端连接数,定时任务的维护将耗费比较多的计算资源。

那么,在海量的场景,我们真的需要非常精确的超时保活吗?当然实际场景对于超时,我们不需要那么精确。因此,有一种更加高效的处理会话保活的算法,叫做时间分桶算法,这种算法可以极大减少了定时任务的数量,只使用一个定时线程就可以处理,极大降低海量连接情况下的计算资源的占用。

时间分桶算法,采用批量处理和近似超时的思想,提升对于客户端超时判断的执行效率。服务器有两类线程,第一类线程是IO处理线程,处理客户端连接后的IO事件,例如连接建立、报文读取、连接关闭等事件;第二类线程是会话清理线程,定期清除超时时间桶中的批量超时会话。具体两种线程的执行过程如下:

第一类IO线程的处理逻辑:

1. 首先,将连续的时间按照固定间隔DT切割成片段,每一个片段就是一个时间桶。建立从任意时刻t到时间桶的映射关系B(t),如图1所示,B(t1)->B0, B(t2)->B1。

服务器海量TCP连接如何高效保活?

图1

2. 连接初始化:当客户端C新建连接的时候,计算出超时的时刻t’=t+DT(假设连接超时时间为DT),计算出B(t’)=B1,因此将连接C1的会话句柄保存在编号为B1的时间桶中,如下图所示:

服务器海量TCP连接如何高效保活?

图2

3. 连接保活:当收到客户端C的数据报文的时候,刷新客户端新的超时时刻t’<-now+DT,如果得到的时间桶比C原来所在的时间桶更新,即:B(t’)>B(t),则将会话C转移到B(t’)的时间桶中去。如下图所示:

服务器海量TCP连接如何高效保活?

图3

4. 连接删除:服务端探测到客户端C的连接发生关闭事件之后,直接从C所在时间桶B(t)中删除该会话。

 

第二类清理线程的处理逻辑:

1. 初始化:t为当前系统毫秒时间,to为离当前时间最近一个时间桶的超时时刻(时间桶的上界即为时间桶的整体超时时刻)to=UP(B(t))。

2. 更新系统当前时刻t<-now()。

3. 如果t<to(t所在的时间桶还未到超时时刻),则线程睡眠(to-t)毫秒,并且跳转到步骤2;

4. 否则(t所在时间桶已经到超时时刻),将B(t)中的所有会话批量删除和关闭连接。超时的时间桶中没有被转移走的会话全是超时的。

5. 更新离当前时间最近一个时间桶的的超时时刻to<-to+DT,并跳转到步骤2。

如下图所示,随着时间流逝,当前时刻达到B2的上界UP(B2)时,由于客户端C1、C7、C8没有及时转移,则清理线程会将C1、C7、C8全部清除掉。

服务器海量TCP连接如何高效保活?

图4

JAVA开源领域,著名的zookeeper就是使用该算法进行海量连接心跳保活,大家感兴趣可以去阅读一下zookeeper源码。



Tags:服务器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  Tags: 服务器  点击:(6)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  Tags: 服务器  点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  Tags: 服务器  点击:(16)  评论:(0)  加入收藏
简介在之前的文章中,我们提到了在netty的客户端通过使用Http2FrameCodec和Http2MultiplexHandler可以支持多路复用,也就是说在一个连接的channel基础上创建多个子channel,通过...【详细内容】
2021-12-14  Tags: 服务器  点击:(8)  评论:(0)  加入收藏
阿里云和腾讯云都是非常好的云服务器平台,大多数用户完全不用纠结腾讯云还是阿里云,特别是微信开发用户,自然是首选腾讯云,其次是学生或个人以及财政紧张的小公司微型业务,腾讯云...【详细内容】
2021-12-14  Tags: 服务器  点击:(14)  评论:(0)  加入收藏
今日总监说32 服务器 磁盘占用率 超过80%多了 。不对啊 之前才清理过df -h 查看了一番 果然40g 用了33g。看了下历史会爆目录 也就5.3G 之前是服务生成临时下载的附件多。...【详细内容】
2021-12-10  Tags: 服务器  点击:(17)  评论:(0)  加入收藏
在Linux系统下如何分享文件呢,你可能会想到用scp、rsync此类的命令,但都需要给出服务器密码,不安全。或者搭建一个ftp、nfs或samba的服务,分配个账号或划分个权限给其它人共享文...【详细内容】
2021-12-08  Tags: 服务器  点击:(17)  评论:(0)  加入收藏
域名系统是最重要的互联网服务之一,没有它,我们将无法访问在线内容,甚至无法发送电子邮件。每当我们尝试连接到其他网站或在线服务时,根 DNS 服务器都会帮助我们的计算机找到并...【详细内容】
2021-11-25  Tags: 服务器  点击:(35)  评论:(0)  加入收藏
实验拓扑 图 1-1实验需求 在深圳总部的 AF 上,配置 DDOS 防护,防止服务器区的服务器被 DDOS 攻击 在深圳总部的 AF 上,配置 IPS,对服务器区的服务器实现入侵检测和入侵防御实验...【详细内容】
2021-11-23  Tags: 服务器  点击:(26)  评论:(0)  加入收藏
服务器日志(server log)是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表简单来说,服务器的日记就是记录网站被访问的全过程,什么时间到什么时间有哪...【详细内容】
2021-11-11  Tags: 服务器  点击:(42)  评论:(0)  加入收藏
▌简易百科推荐
在最近的一波攻击中,黑客利用多个插件中未修补的漏洞攻击了 160 万个 WordPress 网站。 易受攻击的插件对 WordPress 网站产生了的巨大攻击数据。 Wordfence 最近发现 WordPr...【详细内容】
2021-12-16  蚁安    Tags:WordPress   点击:(9)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Z2990Lig    Tags:SSH   点击:(32)  评论:(0)  加入收藏
1、除了服务器需要用的一些正规软件,其它都不要安装。2、在用户中把administrator改名,这样做的目的是即使对方暴破了我们的密码用户名也不容易猜住,相当于又加了一道关卡。...【详细内容】
2021-11-01  IT小哥吧    Tags:服务器   点击:(37)  评论:(0)  加入收藏
账户安全(1)更名administrator本地用户并禁用guest账户步骤:点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组” (2)设定账户锁定策略尝试5次失败...【详细内容】
2021-10-12  Kali与编程  今日头条  Tags:Windows主机   点击:(62)  评论:(0)  加入收藏
本文主要介绍以Microsoft的Windows Server 2019 ,版本:Datacenter(Domain Controller)安全加固保护.企业随着规模不断扩大,业务增多,信息安全建设是企业里一条只有重点没有终点...【详细内容】
2021-09-17  Vireshark    Tags:服务器安全   点击:(64)  评论:(0)  加入收藏
目录常见共享命令IPC$IPC$的利用条件1:开启了139、445端口2:目标主机开启了IPC$共享3:IPC连接报错IPC空连接空连接可以做什么?(毫无作用)IPC$非空连接IPC$非空连接可以做什么?di...【详细内容】
2021-09-16  网络说安全    Tags:系统安全   点击:(86)  评论:(0)  加入收藏
昨天一个老哥找到我,说他的服务器这几天一直被CC攻击,问我这边有没有什么解决的方法? 近年来,网络攻击事件越来越频繁,最常见的就是CC攻击和DDOS攻击,主要的区别就是针对的对象不...【详细内容】
2021-09-10  小蚁GDRAGON    Tags:cc攻击   点击:(58)  评论:(0)  加入收藏
网站页面上的登录操作,通常都是输入帐号密码,传输至网站后台验证。在网站页面、数据传输中,通过技术手段,都可以得到用户输入的信息,并可以修改,从而发起网络攻击。典型的如:使用自...【详细内容】
2021-08-30  修丹道的程序猿    Tags:登录方式   点击:(62)  评论:(0)  加入收藏
网络安全研究人员披露了一类影响主要 DNS 即服务 (DNSaaS) 提供商的新漏洞,这些漏洞可能允许攻击者从企业网络中窃取敏感信息。基础设施安全公司 Wiz 的研究人员 Shir Tamar...【详细内容】
2021-08-12  零日时代    Tags:漏洞   点击:(66)  评论:(0)  加入收藏
001暴力破解1. 指定用户名爆破密码传统型爆破思路,用户名可以通过猜测或者信息收集获得。猜测:admin、网站域名等信息收集:新闻发布人、whoami等2. 指定密码爆破用户名如果是后...【详细内容】
2021-07-23  KaliMa  今日头条  Tags:登陆框   点击:(85)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条