[发明专利]一种基于信令传输的TCP长连接的实现方法及装置有效
| 申请号: | 201410469367.8 | 申请日: | 2014-09-15 |
| 公开(公告)号: | CN105490985B | 公开(公告)日: | 2019-12-13 |
| 发明(设计)人: | 李天騻;娄继冰;陈杰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
| 主分类号: | H04L29/06 | 分类号: | H04L29/06 |
| 代理公司: | 11270 北京派特恩知识产权代理有限公司 | 代理人: | 蒋雅洁;张颖玲 |
| 地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 信令传输 目标参数 标识信息 内存消耗 内核态 服务器 处理结果返回 参数配置 配置参数 配置结果 实现装置 系统内核 对端 监听 减小 预置 数据库 查询 场景 | ||
一种基于信令传输的TCP长连接的实现方法,包括:获取服务器的标识信息,查询预置的配置参数数据库,获取与该标识信息对应的目标参数,该目标参数用于减小处理TCP长连接而产生的内核态内存消耗;根据该目标参数,对该服务器进行系统内核的参数配置;根据配置结果监听TCP长连接请求,对监听到的TCP长连接请求进行处理,并将处理结果返回给对端。此外,本发明还提供一种基于信令传输的TCP长连接的实现装置。上述基于信令传输的TCP长连接的实现方法及装置,可减少处理TCP长连接而产生的内核态内存消耗,实现信令传输场景下的海量TCP长连接。
技术领域
本发明涉及通信技术领域,尤其涉及一种基于信令传输的TCP长连接的实现方法及装置。
背景技术
信令传输场景是一个非常特殊的TCP(Transmission Control Protocol,传输控制协议)连接场景,它具有超高连接数和超低网络传输的特点。MCP(Main control,Cache,Proxy)++是MCP框架的C++语言版本,是一种高性能网络编程框架,它根据epoll模型维护TCP的连接。
然而经过测试,现有的MCP++框架为每个TCP长连接耗费约0.5KB内存。算上内核态的消耗,单个TCP长连接消耗约3.5KB内存。根据epoll的实现,在64位环境下,epoll在内核中需要为每个fd(文件描述符)消耗160Bytes的内存。并且,根据linux内核2.6.32.43中对TCP协议栈的实现,内核为每个应用层中打开的socket(套接字)维护structsocket_alloc数据结构,它包含struct socket和structinode结构,分别对应socket在tcp中的表示和vfs中的inode数据结构。在网络层中,还需要struct sock数据结构来表示socket。对于TCP每个连接收发的数据,使用structsk_buff来记录收发数据信息,并从内核中分配相应的空间来存放数据。存放数据的内核空间的分配单位是page。当TCP连接的数据接收和发送完成后,sk_buff和数据page也相应的释放。在无数据收发时,内核中不会消耗额外的内存空间。因此,内核中socket相关的内存消耗都是描述socket的数据结构。相关的数据结构都是从内核的slab高速缓冲区中申请和释放的。通过查看系统的slab信息,可以计算得出socket相关数据结构(包括epoll)内核态的消耗为2.7KB(包括epoll的消耗)。再加上slab数据结构对齐造成的额外开销,socket相关数据结构总共消耗3KB。以“TCP”数据结构为例:每个slab的size=768032KB/964004=8KB,每个slab存储5个对象,每个对象1.44KB,则每个slab因为对齐而浪费的空间是8KB-1.44*5=0.8KB。对应每个对象浪费0.8KB/5=0.16KB。以此推算,上述slab结构总共浪费的空间如表1所示。
表1 SLAB结构总共浪费的空间
此外,当某个socket有数据发送时候,在struct sock中有“struct page*sk_sndmsg_page”变量指向额外的一个page,用来作为发送缓存,只有当该sock关闭的时候才释放该page。经过测试证明,进程打开的socket无数据发送时,单个socket消耗3KB;有数据发送时,额外消耗4KB。这样一来内核中为每个socket连接需要消耗的内存空间为3KB+4KB=7KB。
海量TCP长连接通常数以万计(20000以上),结合上述测试结果不难发现,当数以万计的TCP长连接并发时,现有的MCP++框架为处理这些连接将会产生巨大的内核态内存消耗,而基于TCP长连接的特性,处理的最终结果将只能是服务器宕机。因此,现有的MCP++在处理TCP长连接过程中所产生的内核态内存消耗巨大,无法实现海量TCP长连接。
发明内容
有鉴于此,本发明提供一种基于信令传输的TCP长连接的实现方法及装置,可减少处理TCP长连接而产生的内核态内存消耗,实现信令传输场景下的海量TCP长连接。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410469367.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于控制阀定位器的截止转变
- 下一篇:用户身份的验证方法、服务器及客户端





