CN103716234A - 一种定位报文内存泄露的方法 - Google Patents
一种定位报文内存泄露的方法 Download PDFInfo
- Publication number
- CN103716234A CN103716234A CN201310703289.9A CN201310703289A CN103716234A CN 103716234 A CN103716234 A CN 103716234A CN 201310703289 A CN201310703289 A CN 201310703289A CN 103716234 A CN103716234 A CN 103716234A
- Authority
- CN
- China
- Prior art keywords
- flag bit
- message
- messages
- internal memory
- value
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 16
- 238000012216 screening Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种定位报文内存泄露的方法,该方法包括:在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;根据第一标志位的值找出内存被占用的报文;统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。本发明能够在短时间内缩小问题范围,从而达到快速定位报文内存泄露的目的。
Description
技术领域
本发明涉及网络技术领域,具体涉及一种定位报文内存泄露的方法。
背景技术
对网络报文的处理是网络设备的基础。当网络设备的网卡等硬件接收到一个报文时会将报文保存到一块预先分配的内存中,网络设备中的cpu会到内存中获取报文的内容,并对报文内容进行分析、处理,根据处理结果对报文进行发送或者丢弃。不论最终是将报文发送出去还是丢弃掉,报文对应的内存都将被释放,否则就会造成内存泄露。当发生内存泄露后,由于不能再申请到内存,因此网卡的硬件就无法将网络报文放到内存中,cpu也就无法接收报文,整个网络设备也就无法工作。
由于目前网络设备很复杂,提供的功能极多,因此要想定位一个报文内存泄露的问题是非常难的,现有的技术方法通常是聚集相关开发、测试专家,对问题进行多次复现,并逐步找到问题规律,然后根据代码一点一点查找,最终定位报文内存泄露的地方。
现有的技术没有提供一个良好的,通用的方法来解决此类问题,需要花费大量的人力去攻关,甚至不能在较短时间内缩小问题范围。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供一种定位报文内存泄露的方法,能够在短时间内缩小问题范围,从而快速定位内存泄露问题。
(二)技术方案
为了达到以上目的,本发明通过以下技术方案予以实现:
一种定位报文内存泄露的方法,该方法包括:
在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;
根据第一标志位的值找出内存被占用的报文;
统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
较佳地,该方法还包括:
将第一标志位和第二标志位均初始化为所设置的初始值;
随着系统的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
其中,所述遍历链表,获取所有报文的第一标志位和第二标志位,包括:通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
一种定位报文内存泄露的系统,该系统包括:预处理单元,链表查询单元,第一标志位筛选单元,第二标志位筛选单元和查询单元;
预处理单元,用于在报文头中设置用于表示报文内存是够占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
链表查询单元,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
较佳地,该系统还包括:
初始化单元,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
其中,所述链表查询单元用于通过链表头访问所有报文的报文头,以获取报文头中的第一标志位和第二标志位。
(三)有益效果
本发明至少有如下有益效果:
本发明通过对报文进行预处理,即在报文头中添加两个标志位,能够实时跟踪报文的处理情况。而且根据表示报文处理阶段的标志位,能够快速定位报文内存泄露的位置。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1是本发明一个实施例提供的一种定位报文内存泄露的方法的流程图;
图2是本发明一个较佳实施例提供的一种定位报文内存泄露的方法的流程图;
图3是本发明一个实施例提供的一种定位报文内存泄露系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,本发明实施例提供了一种定位报文内存泄露的方法,包括如下步骤:
步骤101:在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上。
步骤102:当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位。
本步骤中,通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
步骤103:根据第一标志位的值找出内存被占用的报文。
步骤104:统计内存被占用的所有报文的第二标志位的,找出出现次数最多的第二标志位的值。
步骤105:根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
本发明实施例通过对报文进行预处理,即在报文头中添加两个标志位,能够实时跟踪报文的处理情况。而且根据表示报文处理阶段的标志位,能够短时间内缩小问题范围,快速定位报文内存泄露的位置。
下面通过一个具体的例子,来更为详细的说明本发明一个较佳实施例的实现过程。参见图2,该过程包括如下步骤:
步骤201:在报文头中设置用于表示报文内存是够占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上。
步骤202:将第一标志位和第二标志位均初始化为所设置的初始值。
本步骤中,将第一标志位和第二标志位初始化,如将其初始值均设为0。
步骤203:随着系统的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文的处理阶段而变化。
本步骤中,随着系统的运行,上述第一标志位和第二标志位的初始值就会随着变化。例如,由于初始化时,报文内存未被占用,则第一标志位为初始值0,而随着系统的运行,当报文内存被申请出去时,对应地第一标志位的值应变为1;而第二标志位表示报文的处理阶段,若假设报文流程会经历3个函数:函数A、函数B和函数C,那么可以这样处理,当报文进入函数A时,设置报文的第二标志位为1,当报文进入函数B时,设置报文的第二标志位为2,当报文进入C时,设置报文的第三标志位为3。
步骤204:当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位。
本步骤中,通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
步骤205:根据第一标志位的值找出内存被占用的报文。
步骤206:统计内存被占用的所有报文的第二标志位的,找出出现次数最多的第二标志位的值。
步骤207:根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
本步骤中,例如,若10个正在使用的报文中,magic字段为2的最多,一共有8个。那么说明报文基本上都通过了函数A,但是都在函数B中出现了问题,因而不会进入函数C,由此可以说明在函数B中发生了内存泄露。
参见图3,本发明实施例提供了一种定位报文内存泄露的系统,该系统包括:预处理单元301,初始化单元302,标志位处理单元303,链表查询单元304,第一标志位筛选单元305,第二标志位筛选单元306和查询单元307;
预处理单元301,用于在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
初始化单元302,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元303,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化;
链表查询单元304,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元305,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元306,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元307,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种定位报文内存泄露的方法,其特征在于,该方法包括:
在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;
根据第一标志位的值找出内存被占用的报文;
统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
将第一标志位和第二标志位均初始化为所设置的初始值;
随着系统的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
3.根据权利要求1所述的方法,其特征在于,所述遍历链表,获取所有报文的第一标志位和第二标志位,包括:通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
4.一种定位报文内存泄露的系统,其特征在于,该系统包括:预处理单元,链表查询单元,第一标志位筛选单元,第二标志位筛选单元和查询单元;
预处理单元,用于在报文头中设置用于表示报文内存是够占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
链表查询单元,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
5.根据权利要求4所述的系统,该系统还包括:
初始化单元,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
6.根据权利要求4所述的系统,其特征在于,所述链表查询单元用于通过链表头访问所有报文的报文头,以获取报文头中的第一标志位和第二标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310703289.9A CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310703289.9A CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103716234A true CN103716234A (zh) | 2014-04-09 |
CN103716234B CN103716234B (zh) | 2017-11-28 |
Family
ID=50408833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310703289.9A Active CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103716234B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360954A (zh) * | 2014-10-30 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 一种已申请内存块的统计方法和系统 |
CN109144736A (zh) * | 2018-09-30 | 2019-01-04 | 新华三信息安全技术有限公司 | 一种输出警告消息的方法及装置 |
CN113672416A (zh) * | 2021-07-27 | 2021-11-19 | 杭州迪普科技股份有限公司 | 内存资源泄漏的原因定位方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845080A (zh) * | 2005-04-07 | 2006-10-11 | 华为技术有限公司 | 内存泄漏检测及防止的方法 |
CN1896957A (zh) * | 2005-07-14 | 2007-01-17 | 中兴通讯股份有限公司 | 一种定位虚拟操作系统内存泄漏的方法 |
CN101162436A (zh) * | 2006-10-13 | 2008-04-16 | 中兴通讯股份有限公司 | 一种通信设备系统中内存泄漏的检测方法 |
CN101339533A (zh) * | 2007-07-04 | 2009-01-07 | 国际商业机器公司 | 基于分区的诊断Java系统的内存泄漏的方法及装置 |
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
CN102117242A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种检测内存泄露的方法和装置 |
-
2013
- 2013-12-19 CN CN201310703289.9A patent/CN103716234B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845080A (zh) * | 2005-04-07 | 2006-10-11 | 华为技术有限公司 | 内存泄漏检测及防止的方法 |
CN1896957A (zh) * | 2005-07-14 | 2007-01-17 | 中兴通讯股份有限公司 | 一种定位虚拟操作系统内存泄漏的方法 |
CN101162436A (zh) * | 2006-10-13 | 2008-04-16 | 中兴通讯股份有限公司 | 一种通信设备系统中内存泄漏的检测方法 |
CN101339533A (zh) * | 2007-07-04 | 2009-01-07 | 国际商业机器公司 | 基于分区的诊断Java系统的内存泄漏的方法及装置 |
US20090037687A1 (en) * | 2007-07-04 | 2009-02-05 | International Business Machines Corporation | Partition-based method and apparatus for diagnosing memory leak in java systems |
CN101599046A (zh) * | 2009-06-26 | 2009-12-09 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
CN102117242A (zh) * | 2009-12-30 | 2011-07-06 | 新奥特(北京)视频技术有限公司 | 一种检测内存泄露的方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360954A (zh) * | 2014-10-30 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 一种已申请内存块的统计方法和系统 |
CN104360954B (zh) * | 2014-10-30 | 2017-10-24 | 上海斐讯数据通信技术有限公司 | 一种已申请内存块的统计方法和系统 |
CN109144736A (zh) * | 2018-09-30 | 2019-01-04 | 新华三信息安全技术有限公司 | 一种输出警告消息的方法及装置 |
CN113672416A (zh) * | 2021-07-27 | 2021-11-19 | 杭州迪普科技股份有限公司 | 内存资源泄漏的原因定位方法及装置 |
CN113672416B (zh) * | 2021-07-27 | 2024-03-01 | 杭州迪普科技股份有限公司 | 硬buffer泄漏的原因定位方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103716234B (zh) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2553670A (en) | Database query execution tracing and data generation for diagnosing execution issues | |
PH12018500934A1 (en) | Service call information processing method and device | |
CN109522228B (zh) | 接口自动化测试数据构造方法、装置、平台及存储介质 | |
JP6567169B2 (ja) | サイバー攻撃の検出方法および検出装置 | |
US20160147882A1 (en) | Object Search Method and Apparatus | |
MX2019009201A (es) | Metodo y sistema de seleccion de una funcion de acceso y gestion de movilidad en un entorno de red de acceso. | |
SG11201906252SA (en) | Group information acquisition method, apparatus and interaction system | |
CN103744962B (zh) | 一种实现K‑means聚类的方法及装置 | |
CN104317749A (zh) | 信息写入方法和装置 | |
CN104424240B (zh) | 多表关联方法、主服务节点、计算节点及系统 | |
CN103716234A (zh) | 一种定位报文内存泄露的方法 | |
CN106778278A (zh) | 一种恶意文档检测方法及装置 | |
CN105227493A (zh) | 多核平台下提高数据报文转发性能的方法 | |
CN102915344A (zh) | 一种sql语句处理方法及装置 | |
CN105809066B (zh) | 加密数据的存储方法及终端 | |
CN102880698A (zh) | 一种抓取网站确定方法及装置 | |
CN104199738A (zh) | 一种多数据处理设备协同工作方法及系统 | |
CN110825453B (zh) | 基于大数据平台的数据处理方法及装置 | |
GB0504325D0 (en) | Real time paged computing device and method of operation | |
CN106569734B (zh) | 数据洗牌时内存溢出的修复方法及装置 | |
CN105703964A (zh) | 一种在线应用系统测试方法与设备 | |
CN111125459A (zh) | 字符串处理方法和装置 | |
CN107169115A (zh) | 添加自定义分词的方法及装置 | |
CN105740365A (zh) | 一种数据仓库快速查询方法和装置 | |
CN104298786B (zh) | 一种图像检索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180528 Granted publication date: 20171128 |
|
PP01 | Preservation of patent right | ||
PD01 | Discharge of preservation of patent |
Date of cancellation: 20240528 Granted publication date: 20171128 |
|
PD01 | Discharge of preservation of patent | ||
PP01 | Preservation of patent right |
Effective date of registration: 20240528 Granted publication date: 20171128 |
|
PP01 | Preservation of patent right |