[發明專利]一種基于信令傳輸的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.szxzyx.cn/pat/books/201410469367.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于控制閥定位器的截止轉變
- 下一篇:用戶身份的驗證方法、服務器及客戶端





