[发明专利]连接管理方法和系统有效
申请号: | 201110439809.0 | 申请日: | 2011-12-24 |
公开(公告)号: | CN103178981A | 公开(公告)日: | 2013-06-26 |
发明(设计)人: | 黄文才 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;曾旻辉 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 连接 管理 方法 系统 | ||
【技术领域】
本发明涉及网络技术领域,特别是涉及一种网络连接的管理方法和系统。
【背景技术】
数据通信已经非常普及,众所周知,要和某个服务器(网站)进行数据通信,首先需要通过某种协议与之建立连接,如TCP连接。连接建立后,若长时间没有数据通讯,服务器通常会关闭这些超时(空闲)连接,也称为踢掉TCP空闲连接。
TCP空闲连接:在服务器上,一个TCP连接如果若干秒都没有收到数据,则认为它是空闲连接。
踢掉TCP空闲连接:TCP服务器在监听并接受和管理client的连接上,一般在CS之间会采用心跳协议来维持正常的TCP连接。最简单的也可以采用TCP层的套接字选项keepalive来实现。但从可靠性等方面考虑,一般会采用应用层的心跳协议。
在Linux 2.6.16之前,内核一直使用一种称为timer wheel的机制来管理时钟。这就是熟知的kernel一直采用的基于HZ的timer机制。就像钟表上的秒针,每秒移动一格,由此得名。
传统技术中,服务器内维护和管理各TCP连接所对应的struct成员中有记录最后一次收到数据包的时间。每次通过定时器回调去遍历所有连接对象,对于超过的空闲连接执行关闭TCP连接。
传统技术不足是:效率低,每次在检查连接超时的定时器回调时,都需要遍历所有的连接对象检查满足超时的空闲连接执行关闭TCP连接的条件。当某个连接接收到数据包时,则需要查找并修改连接对象里面的最后一次收到数据包的时间。有些则采用了优先队列的来管理,但当某个连接接收到数据包时,则需要不断的调整优先队列。
【发明内容】
基于此,有必要提供一种高效的连接管理方法和系统。
一种连接管理方法,包括如下步骤:
建立一个hash_set数组,以及指向一个数组元素的索引;
当某个连接对象接收到数据包时,将该连接对象的shared_ptr对象插入到当前所述索引指向的数组元素中;
每隔预定时间,所述索引循环移动指向下一个数组元素,并清空移动后指向的数组元素中的shared_ptr对象;
根据hash_set数组中各个连接对象对应的shared_ptr对象的数量,增减对应连接对象的引用计数;
关闭所述引用计数为0的连接。
本发明一较佳实施例中,所述连接管理方法还包括如下步骤:
在连接对象里保存最后一次往数组元素中插入shared_ptr对象时所述索引的位置;
在将连接对象的shared_ptr对象插入数组元素前,检查当前索引位置和连接对象里的索引位置是否相同,若不同,则将连接对象的shared_ptr对象插入,若相同,则不插入。
本发明一较佳实施例中,所述预定时间为1秒。
本发明一较佳实施例中,所述索引初始化时指向hash_set数组最后一个数组元素。
一种连接管理系统,其包括存储器、信息维护模块、计时模块、数组维护模块以及处理模块,
所述存储器存储有一个hash_set数组,以及指向一个数组元素的索引(tail);
所述信息维护模块用于在某个连接对象接收到数据包时,将该连接对象的shared_ptr对象插入到当前所述索引指向的数组元素中;
所述计时模块用于计时,并每隔预定时间发送一个控制信号给所述数组维护模块;
所述数组维护模块用于响应所述控制信号,将所述索引循环移动指向下一个数组元素,并清空移动后指向的数组元素中的shared_ptr对象;且根据hash_set数组中各个连接对象对应的shared_ptr对象的数量,增减对应连接对象的引用计数;
所述处理模块用于关闭引用计数为0的连接。
本发明一较佳实施例中,所述信息维护模块包括记录单元、比较单元和维护单元,
所述记录单元用于在连接对象里保存最后一次往数组元素中插入shared_ptr对象时所述索引的位置;
所述比较单元用于在连接对象的shared_ptr对象插入数组元素前,检查当前索引位置和连接对象里的索引位置是否相同;
所述维护单元用于在当前索引位置和连接对象里的索引位置不同时,将连接对象的shared_ptr对象插入当前所述索引指向的数组元素中。
本发明一较佳实施例中,所述预定时间为1秒。
本发明一较佳实施例中,所述索引初始化时指向hash_set数组最后一个数组元素。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110439809.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于磁铁矿分级的磁力水力旋流器
- 下一篇:一种氟光气的生产装置