CN115695251A - 自适应的心跳间隔调整方法及系统 - Google Patents
自适应的心跳间隔调整方法及系统 Download PDFInfo
- Publication number
- CN115695251A CN115695251A CN202211108795.9A CN202211108795A CN115695251A CN 115695251 A CN115695251 A CN 115695251A CN 202211108795 A CN202211108795 A CN 202211108795A CN 115695251 A CN115695251 A CN 115695251A
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- interval
- heartbeat interval
- value
- tcp connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000003044 adaptive effect Effects 0.000 claims description 26
- 238000001514 detection method Methods 0.000 claims description 9
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 5
- 238000012360 testing method Methods 0.000 description 16
- 230000001960 triggered effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了自适应的心跳间隔调整方法及系统,属于客户端服务器之间通信的技术领域,要解决的技术问题为如何快速自适应的调整TCP连接的心跳时间间隔,在一定程度上节约资源。包括如下步骤:S100、检测当前环境是否需要对心跳间隔进行调整;S200、设定心跳间隔的区间范围;S300、在客户端与服务器之间建立两个TCP连接;S400、基于心跳间隔的区间范围计算出两个不同的心跳间隔值;S500、检查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围;重复执行步骤S400和步骤S500直至心跳间隔的取值区间不可再分;S600、更新TCP连接的心跳间隔。
Description
技术领域
本发明涉及客户端服务器之间通信的技术领域,具体地说是自适应的心跳 间隔调整方法及系统。
背景技术
目前的一些系统需要客户端与服务器保持通信的可靠性和实时性,这就需 要客户端与服务器保持TCP长连接。但是网络中由于NAT超时、DHCP过期、 路由节点异常等会造成客户端与服务器链路的中断,在TCP通信的两端无法及 时感知链路中断的情况,影响通信的可靠性。为防止TCP长连接上由于长期没 有数据发送而导致链路断开的情况,可以周期性的在两个设备间发送数据包, 这种周期性发送数据包的动作称为心跳。然而实际中心跳的时间间隔是难以确 定的,如果设置的间隔时间太长,可能会导致连接断开,间隔时间太短,会导 致设备流量、电量、性能的损耗。因此既能维持网络连接又能减少资源损耗, 设置合适的心跳间隔是必要的。
现有技术中,实际应用最多的是采用固定的心跳间隔,虽然实现简单,但 对网络的适应性差。在最近的文献中,关于自适应计算心跳间隔主要有以下两 种方法:
一、递增法,递增法的步骤如下:
步骤一:设置心跳间隔的范围,最大心跳间隔为H,最小心跳间隔为L, 步长为S;
步骤二:使用客户端与服务器建立一个TCP长连接,设置该连接的心跳间 隔为C=L;
步骤三:经过一段时间该连接未断开,设置该连接的心跳间隔C=C+S;
重复执行步骤三,直到C=H并且该连接未断开,执行步骤四,否则执行步 骤五;
步骤四:确定该连接最合适的心跳间隔C=H;
步骤五:确定该连接最合适的心跳间隔C=C-S。
二、二分法:
该方法基于二分思想,每次取心跳间隔区间的中间值作为测试值,根据测 试结果不断做小心跳间隔区间范围,直到找出最合适的心跳间隔值。
采用递增的方式确定心跳间隔时间时所花费的时间相对会比较长,采用二 分的方式确定心跳间隔时间时所花费的时间会相对比较少。
如何快速自适应的调整TCP连接的心跳时间间隔,在一定程度上节约资源, 是需要解决的技术问题。
发明内容
本发明的技术任务是针对以上不足,提供自适应的心跳间隔调整方法及系 统,来解决如何快速自适应的调整TCP连接的心跳时间间隔,在一定程度上节 约资源的技术问题。
第一方面,本发明一种自适应的心跳间隔调整方法,用于调整客户端与 服务器之间TCP连接的心跳时间间隔,所述方法包括如下步骤:
S100、检测当前环境是否需要对客户端与服务器之间TCP连接的心跳 间隔进行调整,如果满足心跳间隔调整条件,执行下一步;
S200、设定心跳间隔的区间范围,所述区间范围包括最大心跳间隔值H、 最小心跳间隔值L以及步长S;
S300、在客户端与服务器之间建立两个TCP连接,分别为第一TCP连 接和第二TCP连接,所述第一TCP连接和第二TCP连接同时工作,且第二 TCP连接设置的心跳间隔值大于第一TCP连接设置的心跳间隔值;
S400、基于心跳间隔的区间范围计算出两个不同的心跳间隔值,分别为 第一心跳间隔值C1和第二心跳间隔值C2,且C2>C1,将所述第一心跳间 隔值C1赋予第一TCP连接,将第二心跳间隔值C2赋予第二TCP连接;
S500、经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连 接是否断开,并根据断开情况缩小心跳间隔的取值范围;
重复执行步骤S400和步骤S500直至心跳间隔的取值区间不可再分,对 应的心跳间隔值为最适配的心跳间隔值;
S600、基于所述最适配的心跳间隔值更新TCP连接的心跳间隔。
作为优选,所述满足心跳间隔调整条件包括:
系统重启启动;
TCP连接发送心跳包失败。
作为优选,所述第一心跳间隔值C1为心跳间隔取值区间[L,H]的中位数, 所述第二心跳间隔值C2为心跳间隔取值区间[C 1,H]的中位数。
作为优选,通过如下方法检查第一TCP连接以及第二TCP连接是否断 开:
到了设定的心跳间隔值后,给对方发送一个心跳包,检测对方是否有回 应,如果有回应则证明连接没有断开,否则说明连接已经断开了;
所述发送心跳包的方式为通过设置定时器的方式来触发socket发送心 跳包,或者,睡眠心跳间隔时间后通过线程触发socket发送心跳包。
作为优选,经过C1时间或C2时间后,检查第一TCP连接以及第二TCP 连接是否断开,并根据断开情况缩小心跳间隔的取值范围,包括如下操作:
如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后心跳 间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范围重 新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C1时间之后,第一TCP连接未断开,C2时间之后,第二TCP连 接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H]等同于 [C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1 和第二心跳间隔值C2;
如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心跳间 隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重新计 算第一心跳间隔值C1和第二心跳间隔值C2;
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经 不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最 合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H。
第二方面,本发明一种自适应的心跳间隔调整系统,通过如第一方面任 一项所述的自适应的心跳间隔调整方法调整客户端与服务器之间TCP连接 的心跳时间间隔,所述系统包括:
监控模块,所述监控模块用于检测当前环境是否需要对客户端与服务器 之间TCP连接的心跳间隔进行调整;
心跳间隔参数获取模块,所述心跳间隔参数获取莫可用于设定心跳间隔 的区间范围,所述区间范围包括最大心跳间隔值H、最小心跳间隔值L以及 步长S;
连接维持模块,所述连接维持模块用于在客户端与服务器之间建立两个 TCP连接,分别为第一TCP连接和第二TCP连接,所述第一TCP连接和第 二TCP连接同时工作,且第二TCP连接设置的心跳间隔值大于第一TCP连 接设置的心跳间隔值;
间隔值计算模块,所述间隔值计算模块用于基于心跳间隔的区间范围计 算出两个不同的心跳间隔值,分别为第一心跳间隔值C1和第二心跳间隔值 C2,且C2>C1,将所述第一心跳间隔值C1赋予第一TCP连接,将第二心 跳间隔值C2赋予第二TCP连接;
连接检测模块,所述连接检测模块用于经过C1时间或C2时间后,检 查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小心跳间 隔的取值范围,对应的,所述间隔值计算模块用于基于心跳间隔的区间范围 计算出两个不同的心跳间隔值、直至心跳间隔的取值区间不可再分,对应的 心跳间隔值为最适配的心跳间隔值;
更新模块,所述更新模块用于基于所述最适配的心跳间隔值更新TCP 连接的心跳间隔。
作为优选,所述满足心跳间隔调整条件包括:
系统重启启动;
TCP连接发送心跳包失败。
作为优选,所述第一心跳间隔值C1为心跳间隔取值区间[L,H]的中位数, 所述第二心跳间隔值C2为心跳间隔取值区间[C 1,H]的中位数。
作为优选,所述连接检测模块用于通过如下方法检查第一TCP连接以 及第二TCP连接是否断开:
到了设定的心跳间隔值后,给对方发送一个心跳包,检测对方是否有回 应,如果有回应则证明连接没有断开,否则说明连接已经断开了;
所述发送心跳包的方式为通过设置定时器的方式来触发socket发送心 跳包,或者,睡眠心跳间隔时间后通过线程触发socket发送心跳包。
作为优选,所述连接检测模块用于通过如下操作根据断开情况缩小心跳 间隔的取值范围:
如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后心跳 间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范围重 新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C1时间之后,第一TCP连接未断开,C2时间之后,第二TCP连 接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H]等同于 [C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1 和第二心跳间隔值C2;
如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心跳间 隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重新计 算第一心跳间隔值C1和第二心跳间隔值C2;
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经 不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最 合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H;
所述更新模块用于通过全局变量或参数传递的方式更新TCP连接的心 跳间隔;
通过参数变量的方式更新心跳间隔,包括:设置一个全局变量,TCP连 接每次心跳周期结束后都读取这个全局变量;
通过参数变量的方式更新心跳间隔,包括:将心跳间隔值以参数的形式传 给各个TCP连接。
本发明的自适应的心跳间隔调整方法及系统具有以下优点:
1、设定TCP的区间范围,并基于该区间范围计算两个不同的心跳间隔数 值C1和C2,将上述两个心跳间隔数值赋予设置的两个TCP连接,在C1和C2 时间后检查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小 心跳间隔的取值范围,然后根据调整后的取值范围重置心跳间隔数值C1和C2, 在C1和C2时间后再次检查第一TCP连接以及第二TCP连接是否断开,并根 据断开情况缩小心跳间隔的取值范围,以此类推,直至心跳间隔的取值区间不 可再分,对应的心跳间隔值为最适配的心跳间隔值,通过该方法可快速有效的得出心跳间隔值,在一定程度上节约了资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技 术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性 劳动的前提下,还可以根据这些附图获得其他的附图。
下面结合附图对本发明进一步说明。
图1为实施例1自适应的心跳间隔调整方法的流程框图;
图2为实施例1自适应的心跳间隔调整方法中计算心跳间隔的实例示意图;
图3为实施例1自适应的心跳间隔调整方法中计算好费时间的实例示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人 员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定, 在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。
本发明实施例提供A,用于解决的技术问题。
实施例1:
本发明一种自适应的心跳间隔调整方法,用于调整客户端与服务器之间 TCP连接的心跳时间间隔,该方法包括如下六个步骤。
步骤S100、检测当前环境是否需要对客户端与服务器之间TCP连接的 心跳间隔进行调整,如果满足心跳间隔调整条件,执行下一步。
本实施例步骤S100监控是否需要调整心跳间隔,只有在满足特定条件 下才会触发调整心跳间隔的逻辑流程,满足心跳间隔调整条件为系统启动时、 TCP业务连接发送心跳包失败时,满足上述条件时,执行后续步骤。
S200、设定心跳间隔的区间范围,所述区间范围包括最大心跳间隔值H、 最小心跳间隔值L以及步长S。
步骤S200设置最大心跳间隔为H,最小心跳间隔为L,步长为S;其中, 最大心跳间隔H与最小心跳间隔L是一个区间范围,最合适的心跳间隔要 在这个区间范围内寻到,对于这个范围的大小不做限定,这个范围可以是一 个很大的区间,也可以是一个很小的区间,比如[1,10]或者[1,1000]等。步长 S表示精度,可以根据经验设置成1,2,3等,也可以不设置默认S=1,例 如心跳间隔区间是[1,10],设置的S=2,则最合适的心跳间隔将在[1,3,5,7,9,10] 这6个间隔值中计算。
S300、在客户端与服务器之间建立两个TCP连接,分别为第一TCP连 接和第二TCP连接,所述第一TCP连接和第二TCP连接同时工作,且第二 TCP连接设置的心跳间隔值大于第一TCP连接设置的心跳间隔值。
步骤S300维持两条TCP连接.本实施例中的连接可以认为是socket,维 持两条TCP连接的目的是用于测试不同的心跳间隔下连接是否会断开,两 条连接是同时工作的,第二条连接设置的心跳间隔值要大于第一条连接的间 隔值,比如,当第一条连接的心跳间隔C1设置为5,第二条连接的心跳间 隔C2可能设置为7。由于第二条连接的心跳间隔大于第一条连接,所以当 第一条连接断开的话,第二条连接也会断开,当连接断开的话会重新建立新的连接用于测试,即一直维持着两条连接测试。
S400、基于心跳间隔的区间范围计算出两个不同的心跳间隔值,分别为 第一心跳间隔值C1和第二心跳间隔值C2,且C2>C1,将所述第一心跳间 隔值C1赋予第一TCP连接,将第二心跳间隔值C2赋予第二TCP连接。
步骤S400计算出心跳间隔C1、C2;C1、C2分别为第一条TCP连接与 第二条TCP连接的心跳间隔值,其中C1是取区间[L,H]的中位数,C2是取 区间[C1,H]的中位数。例如,L=1,H=13,步长S=1,C1是取区间[1,13]的中位 数7,C2是取区间[7,13]的中位数10。
S500、经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连 接是否断开,并根据断开情况缩小心跳间隔的取值范围,重复执行步骤S400 和步骤S500直至心跳间隔的取值区间不可再分,对应的心跳间隔值为最适 配的心跳间隔值。
本实施例步骤S500检测C1、C2时间连接是否断开时,检测方式为到 了设定的心跳间隔后,给对方发送一个心跳包,检测对方是否有回应,如果 有回应则证明连接没有断开,否则说明连接已经断开了。
其中发送心跳包可以是通过设置定时器的方式来触发socket发送心跳 包,也可以在睡眠心跳间隔时间后通过线程触发socket发送心跳包。
本实施例步骤S500经过C1时间或C2时间后,检查第一TCP连接以及 第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围,包括 如下操作:
(1)如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后 心跳间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范 围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
(2)如果C1时间之后,第一TCP连接未断开,C2时间之后,第二 TCP连接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H] 等同于[C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔 值C1和第二心跳间隔值C2;
(3)如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心 跳间隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重 新计算第一心跳间隔值C1和第二心跳间隔值C2。
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经 不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最 合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H。
作为重置最大心跳间隔H、最小心跳间隔L的具体实施,如图2所示, L=1,H=13,步长S=1,C1=7,C2=10。如果C1时间到,第一TCP连接断 开了,则设置H=C1-S=6,重新划分新的区间为[1,6],继续在区间[1,6]中计 算出C1、C2的值;如果C1时间到,第一TCP连接未断开,C2时间到, 连接2断开了,则设置L=C1=7,H=C2-1=9,则新的区间为[7,9];如果C2 时间到,第二TCP连接未断开,则设置L=C2=10,则新的区间为[10,13]。
S600、基于所述最适配的心跳间隔值更新TCP连接的心跳间隔。
步骤S600的更新的方式可以是设置一个全局变量,TCP业务连接每次 心跳周期结束后都读取这个全局变量的方式,也可以是通过参数传递的方式, 即把心跳间隔值以参数的形式传给各个TCP业务连接,本实施例不做限定。
具体在什么时候更新TCP业务连接的心跳间隔这里也不做限定,可以 是在计算出最合适的心跳间隔后更新,也可以是在计算过程中不断更新。
比如,本实施例以心跳间隔区间[1,60],步长S=1,单位为分钟,最合适的 心跳间隔是40分钟为例,在第30、67、85、126分钟分别得到心跳间隔是 30、37、40的时候连接不会断开这样的结果,所以可以在第30分钟的时候 更新TCP业务连接的心跳间隔是30,第67分钟的时候更新TCP业务连接 的心跳间隔是37,也可以是直接在第126分钟的时候更新TCP业务连接的 心跳间隔是40。
其中调整心跳间隔的逻辑,可以启动一个新的线程执行,也可以是在已 有的线程里执行,本实施例不做限定。TCP业务连接的初始心跳间隔可以设 置为心跳间隔区间的最小值L,也可以根据经验设置一个默认值,本实施例 不做限定。为了节约资源,当更新完业务TCP连接的心跳间隔值后,测试 所用的两条TCP连接会释放掉。
图3是本实施例自适应心跳间隔调整心跳发送时间图,以心跳间隔区间 [1,60],步长S=1,单位为分钟,最合适的心跳周期是40分钟为例,最合适 的心跳间隔计算过程如下:
步骤一:计算出心跳间隔C1=30、C2=45,测试连接1心跳间隔设为30, 测试连接2心跳间隔设为45;30分钟后连接1发送一个心跳包,发现未断 开;45分钟后连接2发送一个心跳包,发现已经断开;新的心跳间隔区间 为[30,44];
步骤二:计算出心跳间隔C1=37、C2=40,测试连接1心跳间隔设为37, 测试连接2心跳间隔设为40,67分钟后连接1发送一个心跳包,发现未断 开;85分钟后连接2发送一个心跳包,发现未断开;新的心跳间隔区间为 [40,44];
步骤三:计算出心跳间隔C1=42、C2=43,测试连接1心跳间隔设为42, 测试连接2心跳间隔设为43,109分钟后连接1发送一个心跳包,发现连接 断开;此时连接2也没有必要在第128分钟后再发送心跳包了;
步骤四:此时还剩41未测试,由于连接2在第85分钟的时候发过一个 心跳包,连接2在第126分钟的时候再发送一个心跳包,即可得到最合适的 心跳间隔;
步骤五:得到最合适的心跳间隔值是40,共用时126分钟。
本实施例的方法与最近文献中的方法计算出最合适的心跳间隔所需的 时间消耗,假设L=1、H=60、S=1,最合适的心跳间隔分别为10、20、30、 40、50、60的情况下,不同方法所消耗的时间是不一样的,本实施例的方 法在对比递增法、二分法方式时均能有效缩短计算出最合适的心跳间隔的所 耗费的时间。
实施例2:
本发明一种自适应的心跳间隔调整系统,包括监控模块、心跳间隔参数 获取模块、连接维持模块、间隔值计算模块、连接检测模块以及更新模块, 该系统通过实施例1公开的方法调整客户端与服务器之间TCP连接的心跳 时间间隔。
监控模块用于检测当前环境是否需要对客户端与服务器之间TCP连接 的心跳间隔进行调整。
监控模块用于监控是否需要调整心跳间隔,只有在满足特定条件下才会 触发调整心跳间隔的逻辑流程,满足心跳间隔调整条件为系统启动时以及 TCP业务连接发送心跳包失败时,满足上述任一个条件时,执行后续步骤。
心跳间隔参数获取模块用于设定心跳间隔的区间范围,所述区间范围包 括最大心跳间隔值H、最小心跳间隔值L以及步长S。
其中,最大心跳间隔H与最小心跳间隔L是一个区间范围,最合适的 心跳间隔要在这个区间范围内寻到,对于这个范围的大小不做限定,这个范 围可以是一个很大的区间,也可以是一个很小的区间,比如[1,10]或者[1,1000] 等。步长S表示精度,可以根据经验设置成1,2,3等,也可以不设置默认 S=1,例如心跳间隔区间是[1,10],设置的S=2,则最合适的心跳间隔将在 [1,3,5,7,9,10]这6个间隔值中计算。
连接维持模块用于在客户端与服务器之间建立两个TCP连接,分别为 第一TCP连接和第二TCP连接,所述第一TCP连接和第二TCP连接同时 工作,且第二TCP连接设置的心跳间隔值大于第一TCP连接设置的心跳间 隔值。
连接维持模块用于维持两条TCP连接。本实施例中的连接可以认为是 socket,维持两条TCP连接的目的是用于测试不同的心跳间隔下连接是否会 断开,两条连接是同时工作的,第二条连接设置的心跳间隔值要大于第一条 连接的间隔值,比如,当第一条连接的心跳间隔C1设置为5,第二条连接 的心跳间隔C2可能设置为7。由于第二条连接的心跳间隔大于第一条连接, 所以当第一条连接断开的话,第二条连接也会断开,当连接断开的话会重新 建立新的连接用于测试,即一直维持着两条连接测试。
间隔值计算模块用于基于心跳间隔的区间范围计算出两个不同的心跳 间隔值,分别为第一心跳间隔值C1和第二心跳间隔值C2,且C2>C1,将 所述第一心跳间隔值C1赋予第一TCP连接,将第二心跳间隔值C2赋予第 二TCP连接。
本实施例间隔值计算模块用于计算出心跳间隔C1、C2;C1、C2分别为 第一条TCP连接与第二条TCP连接的心跳间隔值,其中C1是取区间[L,H] 的中位数,C2是取区间[C1,H]的中位数。例如,L=1,H=13,步长S=1,C1是 取区间[1,13]的中位数7,C2是取区间[7,13]的中位数10。
连接检测模块用于经过C1时间或C2时间后,检查第一TCP连接以及 第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围,对应 的,所述间隔值计算模块用于基于心跳间隔的区间范围计算出两个不同的心 跳间隔值、直至心跳间隔的取值区间不可再分,对应的心跳间隔值为最适配 的心跳间隔值。
检测C1、C2时间连接是否断开时,检测方式为到了设定的心跳间隔后, 给对方发送一个心跳包,检测对方是否有回应,如果有回应则证明连接没有 断开,否则说明连接已经断开了。
其中发送心跳包可以是通过设置定时器的方式来触发socket发送心跳 包,也可以在睡眠心跳间隔时间后通过线程触发socket发送心跳包。
经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连接是否 断开,并根据断开情况缩小心跳间隔的取值范围,包括如下操作:
(1)如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后 心跳间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范 围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
(2)如果C1时间之后,第一TCP连接未断开,C2时间之后,第二 TCP连接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H] 等同于[C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔 值C1和第二心跳间隔值C2;
(3)如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心 跳间隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重 新计算第一心跳间隔值C1和第二心跳间隔值C2。
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经 不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最 合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H。
更新模块用于基于所述最适配的心跳间隔值更新TCP连接的心跳间隔。
更新的方式可以是设置一个全局变量,TCP业务连接每次心跳周期结束 后都读取这个全局变量的方式,也可以是通过参数传递的方式,即把心跳间 隔值以参数的形式传给各个TCP业务连接,本实施例不做限定。
具体在什么时候更新TCP业务连接的心跳间隔这里也不做限定,可以 是在计算出最合适的心跳间隔后更新,也可以是在计算过程中不断更新。
比如,以心跳间隔区间[1,60],步长S=1,单位为分钟,最合适的心跳间隔 是40分钟为例,在第30、67、85、126分钟分别得到心跳间隔是30、37、 40的时候连接不会断开这样的结果,所以可以在第30分钟的时候更新TCP 业务连接的心跳间隔是30,第67分钟的时候更新TCP业务连接的心跳间隔 是37,也可以是直接在第126分钟的时候更新TCP业务连接的心跳间隔是 40。
其中调整心跳间隔的逻辑,可以启动一个新的线程执行,也可以是在已 有的线程里执行,本实施例不做限定。TCP业务连接的初始心跳间隔可以设 置为心跳间隔区间的最小值L,也可以根据经验设置一个默认值,本实施例 不做限定。为了节约资源,当更新完业务TCP连接的心跳间隔值后,测试 所用的两条TCP连接会释放掉。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明 不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓, 可以组合上述不同实施例中的手段得到本发明更多的实施例,这些实施例也在 本发明的保护范围之内。
Claims (10)
1.一种自适应的心跳间隔调整方法,其特征在于,用于调整客户端与服务器之间TCP连接的心跳时间间隔,所述方法包括如下步骤:
S100、检测当前环境是否需要对客户端与服务器之间TCP连接的心跳间隔进行调整,如果满足心跳间隔调整条件,执行下一步;
S200、设定心跳间隔的区间范围,所述区间范围包括最大心跳间隔值H、最小心跳间隔值L以及步长S;
S300、在客户端与服务器之间建立两个TCP连接,分别为第一TCP连接和第二TCP连接,所述第一TCP连接和第二TCP连接同时工作,且第二TCP连接设置的心跳间隔值大于第一TCP连接设置的心跳间隔值;
S400、基于心跳间隔的区间范围计算出两个不同的心跳间隔值,分别为第一心跳间隔值C1和第二心跳间隔值C2,且C2>C1,将所述第一心跳间隔值C1赋予第一TCP连接,将第二心跳间隔值C2赋予第二TCP连接;
S500、经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围;
重复执行步骤S400和步骤S500直至心跳间隔的取值区间不可再分,对应的心跳间隔值为最适配的心跳间隔值;
S600、基于所述最适配的心跳间隔值更新TCP连接的心跳间隔。
2.根据权利要求1所述的自适应的心跳间隔调整方法,其特征在于,所述满足心跳间隔调整条件包括:
系统重启启动;
TCP连接发送心跳包失败。
3.根据权利要求1所述的自适应的心跳间隔调整方法,其特征在于,所述第一心跳间隔值C1为心跳间隔取值区间[L,H]的中位数,所述第二心跳间隔值C2为心跳间隔取值区间[C1,H]的中位数。
4.根据权利要求1所述的自适应的心跳间隔调整方法,其特征在于,通过如下方法检查第一TCP连接以及第二TCP连接是否断开:
到了设定的心跳间隔值后,给对方发送一个心跳包,检测对方是否有回应,如果有回应则证明连接没有断开,否则说明连接已经断开了;
所述发送心跳包的方式为通过设置定时器的方式来触发socket发送心跳包,或者,睡眠心跳间隔时间后通过线程触发socket发送心跳包。
5.根据权利要求1所述的自适应的心跳间隔调整方法,其特征在于,经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围,包括如下操作:
如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后心跳间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C1时间之后,第一TCP连接未断开,C2时间之后,第二TCP连接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H]等同于[C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心跳间隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H。
6.一种自适应的心跳间隔调整系统,其特征在于,通过如权利要求1-5任一项所述的自适应的心跳间隔调整方法调整客户端与服务器之间TCP连接的心跳时间间隔,所述系统包括:
监控模块,所述监控模块用于检测当前环境是否需要对客户端与服务器之间TCP连接的心跳间隔进行调整;
心跳间隔参数获取模块,所述心跳间隔参数获取莫可用于设定心跳间隔的区间范围,所述区间范围包括最大心跳间隔值H、最小心跳间隔值L以及步长S;
连接维持模块,所述连接维持模块用于在客户端与服务器之间建立两个TCP连接,分别为第一TCP连接和第二TCP连接,所述第一TCP连接和第二TCP连接同时工作,且第二TCP连接设置的心跳间隔值大于第一TCP连接设置的心跳间隔值;
间隔值计算模块,所述间隔值计算模块用于基于心跳间隔的区间范围计算出两个不同的心跳间隔值,分别为第一心跳间隔值C1和第二心跳间隔值C2,且C2>C1,将所述第一心跳间隔值C1赋予第一TCP连接,将第二心跳间隔值C2赋予第二TCP连接;
连接检测模块,所述连接检测模块用于经过C1时间或C2时间后,检查第一TCP连接以及第二TCP连接是否断开,并根据断开情况缩小心跳间隔的取值范围,对应的,所述间隔值计算模块用于基于心跳间隔的区间范围计算出两个不同的心跳间隔值、直至心跳间隔的取值区间不可再分,对应的心跳间隔值为最适配的心跳间隔值;
更新模块,所述更新模块用于基于所述最适配的心跳间隔值更新TCP连接的心跳间隔。
7.根据权利要求6所述的自适应的心跳间隔调整系统,其特征在于,所述满足心跳间隔调整条件包括:
系统重启启动;
TCP连接发送心跳包失败。
8.根据权利要求6所述的自适应的心跳间隔调整系统,其特征在于,所述第一心跳间隔值C1为心跳间隔取值区间[L,H]的中位数,所述第二心跳间隔值C2为心跳间隔取值区间[C1,H]的中位数。
9.根据权利要求6所述的自适应的心跳间隔调整系统,其特征在于,所述连接检测模块用于通过如下方法检查第一TCP连接以及第二TCP连接是否断开:
到了设定的心跳间隔值后,给对方发送一个心跳包,检测对方是否有回应,如果有回应则证明连接没有断开,否则说明连接已经断开了;
所述发送心跳包的方式为通过设置定时器的方式来触发socket发送心跳包,或者,睡眠心跳间隔时间后通过线程触发socket发送心跳包。
10.根据权利要求6所述的自适应的心跳间隔调整系统,其特征在于,所述连接检测模块用于通过如下操作根据断开情况缩小心跳间隔的取值范围:
如果C1时间之后,第一TCP连接断开,则设置H=C1-S,调整后心跳间隔的取值范围[L,H]等同于[L,C1-S],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C1时间之后,第一TCP连接未断开,C2时间之后,第二TCP连接断开,则设置H=C2-L,L=C1,调整后心跳间隔的取值范围[L,H]等同于[C1,C2-L],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
如果C2时间之后,第二TCP连接未断开,设置L=C2,调整后心跳间隔的取值范围[L,H]等同于[C 2,H],基于调整后心跳间隔的取值范围重新计算第一心跳间隔值C1和第二心跳间隔值C2;
对于调整后心跳间隔的取值范围[L,H],当H<=L+S时,说明区间已经不可再分了,此时已经能够得到最合适的心跳时间间隔,当H=L+S时,最合适的时间间隔为L,当H<L+S时,最合适的时间间隔为H;
所述更新模块用于通过全局变量或参数传递的方式更新TCP连接的心跳间隔;
通过参数变量的方式更新心跳间隔,包括:设置一个全局变量,TCP连接每次心跳周期结束后都读取这个全局变量;
通过参数变量的方式更新心跳间隔,包括:将心跳间隔值以参数的形式传给各个TCP连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211108795.9A CN115695251A (zh) | 2022-09-13 | 2022-09-13 | 自适应的心跳间隔调整方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211108795.9A CN115695251A (zh) | 2022-09-13 | 2022-09-13 | 自适应的心跳间隔调整方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115695251A true CN115695251A (zh) | 2023-02-03 |
Family
ID=85062507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211108795.9A Pending CN115695251A (zh) | 2022-09-13 | 2022-09-13 | 自适应的心跳间隔调整方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115695251A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106416133A (zh) * | 2015-04-08 | 2017-02-15 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
WO2017193795A1 (zh) * | 2016-05-10 | 2017-11-16 | 北京奇虎科技有限公司 | 一种移动终端的数据传输方法和装置 |
CN109150670A (zh) * | 2018-11-05 | 2019-01-04 | 中通天鸿(北京)通信科技股份有限公司 | 一种用于保持连接的心跳方法和系统 |
CN114500550A (zh) * | 2021-12-31 | 2022-05-13 | 深圳市晨北科技有限公司 | 设备心跳间隔控制方法、装置、物联网设备及存储介质 |
-
2022
- 2022-09-13 CN CN202211108795.9A patent/CN115695251A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106416133A (zh) * | 2015-04-08 | 2017-02-15 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
WO2017193795A1 (zh) * | 2016-05-10 | 2017-11-16 | 北京奇虎科技有限公司 | 一种移动终端的数据传输方法和装置 |
CN109150670A (zh) * | 2018-11-05 | 2019-01-04 | 中通天鸿(北京)通信科技股份有限公司 | 一种用于保持连接的心跳方法和系统 |
CN114500550A (zh) * | 2021-12-31 | 2022-05-13 | 深圳市晨北科技有限公司 | 设备心跳间隔控制方法、装置、物联网设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210006484A1 (en) | Fault detection method, apparatus, and system | |
CN106453648B (zh) | 智能家居设备的设备状态确定方法及装置 | |
US6625648B1 (en) | Methods, systems and computer program products for network performance testing through active endpoint pair based testing and passive application monitoring | |
CN110649984B (zh) | 一种时钟同步的方法、装置、计算机存储介质及电子设备 | |
JP2012039446A (ja) | 通信システム及び通信装置 | |
JP2005228316A (ja) | Tcpコネクション管理装置、tcpコネクション管理方法及びプログラム保存装置 | |
CN110908872B (zh) | 一种服务器状态检测方法及系统 | |
WO2018090602A1 (zh) | 一种长连接服务器保活报文控制方法及系统 | |
CN107360239A (zh) | 一种客户端连接状态检测方法及系统 | |
CN110445683B (zh) | 服务器、设备、监测服务器存活状态的方法及系统 | |
CN114629822A (zh) | 链路检测方法、装置、电子设备及存储介质 | |
KR20150019499A (ko) | 게이트웨이의 메시지 처리 방법 | |
CN113746733A (zh) | 表项同步方法、网关设备、组网系统及存储介质 | |
CN112769652A (zh) | 一种节点服务监控方法、装置、设备及介质 | |
EP2432193A2 (en) | Method of data replication in a distributed data storage system and corresponding device | |
US10346332B2 (en) | Slave device | |
CN114422571A (zh) | 一种量子通信客户端断开重连系统及方法 | |
CN105224442A (zh) | 一种多客户端共享文件系统性能测试方法 | |
CN115695251A (zh) | 自适应的心跳间隔调整方法及系统 | |
US9043472B1 (en) | Method and system for providing transmission control protocol dead connection detection | |
US11153824B1 (en) | Maintenance and monitoring of target wait time (TWT) sessions | |
CN112996031A (zh) | 一种ppp链路选择方法及系统 | |
CN113411237B (zh) | 一种低延迟检测终端状态的方法、存储介质及系统 | |
US20070171896A1 (en) | Management system and management method for managing a communication apparatus | |
CN110601914B (zh) | 监测服务器存活状态的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |