CN111614649B - 关闭tcp短连接的方法及装置 - Google Patents
关闭tcp短连接的方法及装置 Download PDFInfo
- Publication number
- CN111614649B CN111614649B CN202010406598.XA CN202010406598A CN111614649B CN 111614649 B CN111614649 B CN 111614649B CN 202010406598 A CN202010406598 A CN 202010406598A CN 111614649 B CN111614649 B CN 111614649B
- Authority
- CN
- China
- Prior art keywords
- socket
- connection
- preset time
- time period
- closed
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种关闭TCP短连接的方法及装置,该方法包括:按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。本发明可使套接字连接的客户端端口优先关闭,避免了服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的情况,同时解决了处于TIME_WAIT状态的服务端端口易造成资源浪费的问题。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种关闭TCP短连接的方法及装置。
背景技术
目前在进行TCP(Transmission Control Protocol,传输控制协议)通讯时,一般采用以套接字(Socket)来建立短连接的方式,具体的通讯过程如下:1.由Client(客户端)向Server(服务端)发起建立套接字连接;2.连接成功后,Client向Server发送请求数据;3.Server接收请求数据后进行业务处理;4.Server回送响应数据,如果此时服务端没有与客户端再交互的需求,则需要服务端关闭连接;5.Client接收响应数据,如果此时与服务端无交互请求,则客户端关闭连接。
在第4步中,Server发送响应数据后就已经完成了工作,所以会主动关闭套接字连接,这也是同步处理过程中Server的最后工作,此时不关闭连接会有可能造成连接不释放的问题。但如果Server主动关闭套接字连接,会有大概率使得服务端被释放的套接字端口处于TIME_WAIT状态,而TIME_WAIT状态释放需要等待2个MSL(Max Segment Lifetime,最大段生存期)时间(此时间的最短配置为30秒)才可以释放此资源。
以上的TCP短连接会带来如下问题:
1.Server的大量端口持有TIME_WAIT状态,会消耗大量服务器资源,如消耗操作系统的文件句柄数量,当达到句柄上限时,会导致服务端不能再接收新的连接请求;2.如果客户端使用相同的端口,即相同的Socket通讯五元组,请求建立套接字连接时,若此时服务端对应的端口处于TIME_WAIT状态,则会造成通讯失败的问题。针对不同的操作系统,TCP底层处理机制可能会不同,如操作系统为Linux的客户端与操作系统为AIX的服务端建立连接时,若Linux客户端使用相同的端口,则会造成AIX服务端于操作系统级别的首次建立连接失败的问题。
目前针对以上问题存在如下解决方案:
1.可以通过长连接进行TCP通讯,以解决上述问题。但TCP长连接实现的复杂度较高,并且会对原系统通讯架构有很大的影响。且使用长连接的系统设计复杂度高,维护成本高,尤其对于已经处于运行状态系统的改造的成本会很高;2.将TCP短连接的客户端连接超时时间设置为超过1秒。对于相同通讯五元组的连接,服务端会拒绝连接请求,服务端操作系统会reset(重置)原连接,TCP会在间隔1秒后重新发起连接,此时因为服务端已经释放了此处于TIME_WAIT状态的端口,因此此时可以建立连接成功,但此方案会使交易的耗时增加,对于出现相同五元组的连接都会消耗超过1秒的耗时。在出现相同五元组连接服务端时,若服务端端口处于TIME_WAIT状态,服务端是立刻响应reset拒绝连接,但由于TCP底层协议原因,客户端还是需要等待1秒之后才会再次发起建立连接请求,因此会导致交易的耗时会明显变长。此种方式不适用于对响应时间较敏感的应用场景,而且此方案并不能解决服务端处于TIME_WAIT状态端口会占用大量服务器资源的问题。
发明内容
本发明实施例提供了一种关闭TCP短连接的方法,用以解决服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的问题,该方法包括:
按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
针对服务端主动发起关闭TCP短连接,在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
本发明实施例还提供了一种关闭TCP短连接的装置,用以解决服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的问题,该装置包括:
套接字获取模块,用于:按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
线性安全队列生成模块,用于:根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
客户端端口监测模块,用于:针对服务端主动发起关闭TCP短连接,在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
套接字关闭模块,用于:在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述关闭TCP短连接的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述关闭TCP短连接的方法的计算机程序。
本发明实施例中,按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接,从而在关闭TCP短连接时,使套接字连接的客户端端口优先关闭,避免了服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的情况,同时解决了处于TIME_WAIT状态的服务端端口易造成资源浪费的问题,与现有技术对比,不需改造原系统通讯架构,且应用成本低,不会额外交易耗时,适用于各种场景,并提高了关闭TCP短连接的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种关闭TCP短连接的方法的流程示意图;
图2是本发明实施例提供的一种关闭TCP短连接的方法的实例的流程示意图;
图3是本发明实施例提供的一种关闭TCP短连接的装置的结构示意图;
图4是本发明实施例提供的一种关闭TCP短连接的装置的结构示意图;
图5是本发明实施例提供的一种关闭TCP短连接的装置的实例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明涉及如下名词,如下进行解释:
Socket通讯五元组,包括:源IP地址、源端口、传输层协议(协议类型)、目的IP地址、目的端口。只有5个元素完全相同,才会被系统认定为同一个套接字(即同一个连接);
TCP建立连接:3次握手通讯过程;
TCP关闭连接:4次挥手通讯过程;
套接字(Socket):应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。
本发明实施例提供了一种关闭TCP短连接的方法,如图1所示,用以解决服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的问题,该方法包括:
步骤101:按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
步骤102:根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
步骤103:在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
步骤104:在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
本发明实施例中,按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接,从而在关闭TCP短连接时,使套接字连接的客户端端口优先关闭,避免了服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的情况,同时解决了处于TIME_WAIT状态的服务端端口易造成资源浪费的问题,与现有技术对比,不需改造原系统通讯架构,且应用成本低,不会额外交易耗时,适用于各种场景,并提高了关闭TCP短连接的效率。
具体实施时,首先按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字。
举一例,预设时间段可为500ms;按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字,如按时间先后顺序,扫描500ms待关闭TCP短连接的套接字。
具体实施时,在获取每一预设时间段内待关闭TCP短连接的套接字后,根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列。而根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列的方法有多种,例如,可以包括:根据每一预设时间段内获取的套接字,生成每一预设时间段内获取的套接字的队列元素;按套接字获取时间先后顺序,排列每一预设时间段内获取的套接字的队列元素,生成每一预设时间段对应的线性安全队列。
实施例中,通过生成对应套接字的队列元素,并将队列元素生成每一预设时间段对应的线性安全队列,可以更方便地以队列元素的形式对套接字进行控制。队列元素可以包括待关闭的服务端连接和首次加入队列的时间。按套接字获取时间先后顺序,排列每一预设时间段内获取的套接字的队列元素,生成每一预设时间段对应的线性安全队列。
具体实施时,生成每一预设时间段对应的线性安全队列后,在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭。而确定每一套接字对应的客户端端口是否关闭的方法有多种,例如,可以包括:在套接字的输入流可用时,确定套接字对应的客户端端口未关闭;在套接字的输入流不可用时,确定套接字对应的客户端端口关闭。
实施例中,首先判断此套接字的输入流是否已经关闭,如果套接字的输入流已经关闭,则代表客户端已经关闭了连接。
具体实施时,在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
实施例中,在客户端端口和服务端端口建立连接时,可以以应用程序发送或接收数据,应用程序可以通过套接字发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并通过套接字与网络中的其他应用程序进行通信。在客户端端口和服务端端口建立连接时,通过套接字发送或接收数据,通过关闭对应套接字,来关闭对应的TCP连接。
具体实施时,本发明实施例提供的关闭TCP短连接的方法还可以包括:在确定套接字对应的客户端端口未关闭后,确定套接字对应连接的连接时长是否超过预设时长;在确定套接字对应连接的连接时长未超过预设时长后,将套接字放入下一预设时间段对应的线性安全队列;在确定套接字对应连接的连接时长超过预设时长后,关闭套接字对应的TCP短连接。
实施例中,在确定套接字对应的客户端端口未关闭后,则判断此套接字的连接是否超过预设时长,如果超过预设时长,则关闭此连接的套接字。通过判断此套接字是否超过预设时长,可以防止客户端处于异常情况不能关闭连接,从而导致此连接的套接字一直不释放的情况发生;在确定套接字对应连接的连接时长未超过预设时长后,将该套接字重新放入对应下一预设时间段对应的线性安全队列中,在处理下一时间段的线性安全队列时,重复处理该套接字,从而可以更有效地处理套接字,保证了每一连接的套接字都能得到关闭。
具体实施时,将套接字放入下一预设时间段对应的线性安全队列,例如,可以包括:将套接字放入下一预设时间段对应的线性安全队列的队首。
实施例中,通过将套接字放入下一预设时间段对应的线性安全队列的指定位置,可以实现对该套接字处理顺序的安排,如将套接字放入下一预设时间段对应的线性安全队列的队首,可以实现在处理下一预设时间段对应的线性安全队列时,优先处理位于线性安全队列的队首的套接字。
举一具体实例,如图2所示,图2是本发明实施例提供的一种关闭TCP短连接的方法的实例的流程示意图。在服务端正常的业务结束后,需要关闭释放TCP连接时,需要将待关闭的连接的套接字生成一线性安全队列,关闭套接字对应的TCP短连接,从而使业务流程处理结束。图2中按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字后,执行如下步骤:
步骤1:获取当前线性安全队列的长度,处理该队列内的套接字。例如获取队列长度为100,则本次循环处理只检查关闭100个连接的套接字。在处理过程中新增加的队列元素,需要等待下一次循环时处理;
步骤2:按照获取到当前队列大小的值,依次获取队列内的元素进行处理,处理方式可为依次获取队列头元素,处理完成后需要将队列头元素删除,每次增加都可将元素加到下一队列尾;
步骤3:获取的队列元素为待关闭的服务端连接的Socket,可以通过检查输入流是否可用的方式来判断客户端端口是否已经关闭了连接,如果客户端端口已经关闭,则服务端在此时执行关闭此连接的套接字的操作,然后继续执行一下元素处理直到所有元素处理完毕;
步骤4:如果客户端连接可用,则表示客户端还未关闭连接,此时还需要检查此连接时长是否超过预设时长,如果超过预设时长则需要关闭此连接。预设时长是一个预设的参数,可用来决策最晚关闭连接的时间。例如可将预设时长设置为5秒,则在客户端一直未关闭连接的情况下,服务端最长需等待5秒来关闭此连接。设置预设时长可避免因客户端处理不规范导致连接资源长久不能释放的情况;
步骤5:如果步骤3和步骤4检查都没有符合关闭连接的条件,则此时需要将连接重新放回下一预设时间段对应的线性安全队列中,等待下一个循环的处理。
本发明实施例中,按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接,从而在关闭TCP短连接时,使套接字连接的客户端端口优先关闭,避免了服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的情况,同时解决了处于TIME_WAIT状态的服务端端口易造成资源浪费的问题,与现有技术对比,不需改造原系统通讯架构,且应用成本低,不会额外交易耗时,适用于各种场景,并提高了关闭TCP短连接的效率。
实施例中,可以解决高并发场景下端到端的TCP短连接由于Server端主动关闭连接而造成Server端大量TIME_WAIT端口,从而消耗Server端大量资源并有可能造成Client端建立连接失败的问题;如果由客户端端口首先关闭TCP连接,则服务端的端口是立即释放,TIME_WAIT状态是由客户端端口持有的,本发明实施例可以保证在业务流程联机处理情况下,保证TCP短连接优先由客户端关闭,用于管理和释放已经使用完毕的连接。在服务端响应数据后,并不主动关闭连接,而是将此连接的套接字放置在一线性安全队列中,通过依次处理队列中的套接字,实现异步关闭套接字处理。通过保证由客户端先释放连接方式,来保证TIME_WAIT状态保持在客户端端口,这样服务端的资源就是立刻释放,从而不占用服务端的资源。客户端在进行建立连接时,会自动选择可用端口,因此不会出现五元组重复问题。
如上所述,本发明实施例作为服务端的机制,对于服务端应用的侵入只有释放连接部分,不涉及业务功能变更,实现了将服务端关闭连接方式由同步处理改为异步处理,因同步处理无法保证关闭连接动作是先由客户端执行,而异步处理通过本发明实施例的方法可保证由客户端先关闭连接的套接字。对于使用短连接方式进行通讯的场景,本发明实施例在TCP协议机制上就可以使客户端保持TCP连接的TIME_WAIT状态,使服务端资源立刻释放,从而最大程度上使服务端资源得到最大有效使用。因为一般的场景都是客户端很多,服务端资源有限。因为服务端不持有TIME_WAIT状态,还可以有效减少因为通讯五元组重复而造成的首次建立连接失败的错误。
基于同一发明构思,本发明实施例中还提供了一种关闭TCP短连接的装置,如下面的实施例所述。由于关闭TCP短连接的装置解决问题的原理与关闭TCP短连接的方法相似,因此关闭TCP短连接的装置的实施可以参见关闭TCP短连接的方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本发明实施例中关闭TCP短连接的装置的结构示意图,如图3所示,包括:
套接字获取模块01,用于:按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
线性安全队列生成模块02,用于:根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
客户端端口监测模块03,用于:在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
套接字关闭模块04,用于:在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
在一个实施例中,线性安全队列生成模块,具体用于:根据每一预设时间段内获取的套接字,生成每一预设时间段内获取的套接字的队列元素;按套接字获取时间先后顺序,排列每一预设时间段内获取的套接字的队列元素,生成每一预设时间段对应的线性安全队列。
在一个实施例中,本发明实施例提供的关闭TCP短连接的装置还可以包括:套接字连接时长监测模块05,如图4所示,用于:在确定套接字对应的客户端端口未关闭后,确定套接字对应连接的连接时长是否超过预设时长;
线性安全队列生成模块还用于:在确定套接字对应连接的连接时长未超过预设时长后,将套接字放入下一预设时间段对应的线性安全队列;
套接字关闭模块还用于:在确定套接字对应连接的连接时长超过预设时长后,关闭套接字对应的TCP短连接。
在一个实施例中,套接字连接时长监测模块,具体用于:将套接字放入下一预设时间段对应的线性安全队列的队首。
在一个实施例中,客户端端口监测模块,具体用于:在套接字的输入流可用时,确定套接字对应的客户端端口未关闭;在套接字的输入流不可用时,确定套接字对应的客户端端口关闭。
举一具体实例,如图5所示,图5是本发明实施例提供的一种关闭TCP短连接的装置的实例的结构示意图,包括:
线性安全队列生成模块,在本实施例中可为队列管理模块,用于将待关闭的套接字使用线程安全的队列进行存储。
套接字获取模块,在本实施例中可为循环扫描模块,用于作为一个独立的守护线程,每隔500ms(可定制)扫描一次队列管理器中的元素,并将当前的所有元素(通过调用队列管理器计算队列大小方法获取总数)依次处理,依次处理方式为调用检查模块和关闭模块。因为队列元素是实时变化的,所以只能先获取当前大小,只处理当前的所有元素,处理过程中新增加的元素在下一个循环周期执行。
客户端端口监测模块,在本实施例中可为检查模块,用于分两步判断检查。首先判断此套接字的输入流是否已经关闭,如果已经关闭则代表客户端已经关闭了连接,此时可以调用关闭模块将套接字关闭;如果客户端未关闭,则判断此套接字是否超过限定时间,如果超过限定时间则也执行关闭模块来关闭此连接,之所以增加限定时间判断,是为了防止客户端因为异常原因而不能关闭连接而导致连接一直不释放;如果未超过限定时间,则将此套接字再次加入到队列尾。
套接字关闭模块,在本实施例中可为关闭模块,用于关闭指定的套接字连接,释放资源。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述关闭TCP短连接的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述关闭TCP短连接的方法的计算机程序。
本发明实施例中,按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接,从而在关闭TCP短连接时,使套接字连接的客户端端口优先关闭,避免了服务端端口先关闭而使端口处于TIME_WAIT状态,易造成TCP通讯失败的情况,同时解决了处于TIME_WAIT状态的服务端端口易造成资源浪费的问题,与现有技术对比,不需改造原系统通讯架构,且应用成本低,不会额外交易耗时,适用于各种场景,并提高了关闭TCP短连接的效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种关闭TCP短连接的方法,其特征在于,包括:
按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
针对服务端主动发起关闭TCP短连接,在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
2.如权利要求1所述的方法,其特征在于,根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,包括:
根据每一预设时间段内获取的套接字,生成每一预设时间段内获取的套接字的队列元素;
按套接字获取时间先后顺序,排列每一预设时间段内获取的套接字的队列元素,生成每一预设时间段对应的线性安全队列。
3.如权利要求1所述的方法,其特征在于,还包括:
在确定套接字对应的客户端端口未关闭后,确定套接字对应连接的连接时长是否超过预设时长;
在确定套接字对应连接的连接时长未超过预设时长后,将套接字放入下一预设时间段对应的线性安全队列;在确定套接字对应连接的连接时长超过预设时长后,关闭套接字对应的TCP短连接。
4.如权利要求3所述的方法,其特征在于,将套接字放入下一预设时间段对应的线性安全队列,包括:
将套接字放入下一预设时间段对应的线性安全队列的队首。
5.如权利要求1所述的方法,其特征在于,确定每一套接字对应的客户端端口是否关闭,包括:
在套接字的输入流可用时,确定套接字对应的客户端端口未关闭;
在套接字的输入流不可用时,确定套接字对应的客户端端口关闭。
6.一种关闭TCP短连接的装置,其特征在于,包括:
套接字获取模块,用于:按时间先后顺序,获取每一预设时间段内待关闭TCP短连接的套接字;
线性安全队列生成模块,用于:根据每一预设时间段内获取的套接字,生成每一预设时间段对应的线性安全队列,其中,线性安全队列中的套接字按获取时间先后顺序排列;
客户端端口监测模块,用于:针对服务端主动发起关闭TCP短连接,在每一线性安全队列中,按时间先后顺序,确定每一套接字对应的客户端端口是否关闭;
套接字关闭模块,用于:在确定套接字对应的客户端端口关闭后,关闭套接字对应的TCP短连接。
7.如权利要求6所述的装置,其特征在于,线性安全队列生成模块,具体用于:
根据每一预设时间段内获取的套接字,生成每一预设时间段内获取的套接字的队列元素;
按套接字获取时间先后顺序,排列每一预设时间段内获取的套接字的队列元素,生成每一预设时间段对应的线性安全队列。
8.如权利要求6所述的装置,其特征在于,还包括:套接字连接时长监测模块,用于:
在确定套接字对应的客户端端口未关闭后,确定套接字对应连接的连接时长是否超过预设时长;
线性安全队列生成模块还用于:在确定套接字对应连接的连接时长未超过预设时长后,将套接字放入下一预设时间段对应的线性安全队列;
套接字关闭模块还用于:在确定套接字对应连接的连接时长超过预设时长后,关闭套接字对应的TCP短连接。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010406598.XA CN111614649B (zh) | 2020-05-14 | 2020-05-14 | 关闭tcp短连接的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010406598.XA CN111614649B (zh) | 2020-05-14 | 2020-05-14 | 关闭tcp短连接的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111614649A CN111614649A (zh) | 2020-09-01 |
CN111614649B true CN111614649B (zh) | 2022-07-12 |
Family
ID=72201456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010406598.XA Active CN111614649B (zh) | 2020-05-14 | 2020-05-14 | 关闭tcp短连接的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111614649B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7263556B1 (en) * | 2000-08-11 | 2007-08-28 | Microsoft Corporation | System and method of enhancing server throughput by minimizing timed-wait TCP control block (TWTCB) size |
CN103973657A (zh) * | 2013-02-04 | 2014-08-06 | 华耀(中国)科技有限公司 | 一种tcp连接的time_wait状态下节省内存的方法 |
JP2016031754A (ja) * | 2014-07-29 | 2016-03-07 | デジタルア−ツ株式会社 | 情報処理装置及びプログラム |
US9288225B1 (en) * | 2013-04-17 | 2016-03-15 | Ca, Inc. | Server port sharing based on shared socket |
CN109040307A (zh) * | 2018-09-11 | 2018-12-18 | 中国银行股份有限公司 | 一种通讯连接的自清理方法及装置 |
-
2020
- 2020-05-14 CN CN202010406598.XA patent/CN111614649B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7263556B1 (en) * | 2000-08-11 | 2007-08-28 | Microsoft Corporation | System and method of enhancing server throughput by minimizing timed-wait TCP control block (TWTCB) size |
CN103973657A (zh) * | 2013-02-04 | 2014-08-06 | 华耀(中国)科技有限公司 | 一种tcp连接的time_wait状态下节省内存的方法 |
US9288225B1 (en) * | 2013-04-17 | 2016-03-15 | Ca, Inc. | Server port sharing based on shared socket |
JP2016031754A (ja) * | 2014-07-29 | 2016-03-07 | デジタルア−ツ株式会社 | 情報処理装置及びプログラム |
CN109040307A (zh) * | 2018-09-11 | 2018-12-18 | 中国银行股份有限公司 | 一种通讯连接的自清理方法及装置 |
Non-Patent Citations (3)
Title |
---|
TCP连接状态详解及TIME_WAIT过多的解决方法;沧海一滴;《TCP连接状态详解及TIME_WAIT过多的解决方法 - 沧海一滴 - 博客园》;20160805;1-7 * |
The TIME-WAIT state in TCP and Its Effect on Busy Servers;T. Faber;《IEEE INFOCOM "99. Conference on Computer Communications. Proceedings. Eighteenth Annual Joint Conference of the IEEE Computer and Communications Societies. The Future is Now (Cat. No.99CH36320)》;20020806;1-11 * |
高性能HTTPS服务中的TIME_WAIT分析;杜旻翔;《软件导刊》;20170531;155-157 * |
Also Published As
Publication number | Publication date |
---|---|
CN111614649A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108124003B (zh) | 网络管理设备连接处理方法、装置及系统 | |
CN112035228A (zh) | 一种资源调度方法及装置 | |
CN109286529B (zh) | 一种恢复RabbitMQ网络分区的方法及系统 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
CN107688502B (zh) | 进程间通信方法及装置 | |
US10505881B2 (en) | Generating message envelopes for heterogeneous events | |
CN108089915B (zh) | 基于消息队列的业务控件化处理的方法及系统 | |
CN113742031A (zh) | 节点状态信息获取方法、装置、电子设备及可读存储介质 | |
US9973306B2 (en) | Freshness-sensitive message delivery | |
US8938490B2 (en) | System and method for accessing mainframe system automation from a process automation application | |
WO2023185136A1 (zh) | 一种边缘节点的处理方法、装置及介质 | |
CN111400041A (zh) | 服务器配置文件的管理方法、装置及计算机可读存储介质 | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
CN115248692A (zh) | 一种支持多种深度学习框架模型云端部署的装置及方法 | |
CN110768812B (zh) | 一种服务器管理系统及方法 | |
CN114884840A (zh) | 应用健康状态检查方法及电子设备 | |
CN111031123B (zh) | Spark任务的提交方法、系统、客户端及服务端 | |
CN111427704B (zh) | 配置指令的远程监控方法、装置、设备及存储介质 | |
CN111614649B (zh) | 关闭tcp短连接的方法及装置 | |
CN116886286A (zh) | 大数据认证服务自适应方法、装置和设备 | |
CN111431951B (zh) | 一种数据处理方法、节点设备、系统及存储介质 | |
CN116319758A (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
CN116260885A (zh) | 一种云边协同推理方法及装置 | |
CN115640096A (zh) | 基于kubernetes的应用管理方法、装置和存储介质 | |
CN113204459A (zh) | U盾测试方法、装置、设备和介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |