一种基于趋势分析的系统资源泄漏测试方法技术方案

技术编号:20622164 阅读:30 留言:0更新日期:2019-03-20 14:15
本发明专利技术公开了一种基于趋势分析的系统资源泄漏测试方法,依赖Linux系统工具sar取样收集数据;根据设定的时间间隔周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件;运行数据展示脚本加载json文件读取数据,并对得到的数据进行可视化处理以实现图形化展示资源消耗趋势;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏。本发明专利技术能够通过趋势分析在泄漏初期就能检测出问题,同时本发明专利技术着眼于整个系统中运行的所有进程;本发明专利技术实现了及时诊断资源泄露并且能够定位内存泄漏所发生的位置,方便后期维护,具有较好的实用性。

A Trend Analysis-based Method for System Resource Leakage Testing

The invention discloses a system resource leak testing method based on trend analysis, which relies on the Linux system tool SAR to collect data; scans the memory files in the system/proc directory periodically according to the set time interval, sampled and acquires the required data and saves it as. JSON file; loads JSON file to read data by running data display script, and visualizes the obtained data. In order to realize the graphical display of resource consumption trend; if the amount of resources occupied by the detected program keeps rising and never has a downward trend, it is judged that the program caused the leakage of system resources. The invention can detect problems at the initial stage of leakage by trend analysis, and focuses on all processes running in the whole system. The invention realizes timely diagnosis of resource leakage and can locate the location of memory leakage, which is convenient for later maintenance and has good practicability.

【技术实现步骤摘要】
一种基于趋势分析的系统资源泄漏测试方法
本专利技术属于系统资源泄漏检测的
,具体涉及一种基于趋势分析的系统资源泄漏测试方法。
技术介绍
系统资源意指一个计算机系统中,限制其运算能力的任何实体或者是虚拟组成的元件。进程运行时,需要为其分配系统资源。系统资源泄漏也时常发生。以下以内存泄漏为例详细说明。内存泄漏是软件开发中经常遇到的问题,如图1所示,程序执行过程中被动态分配的存储空间由于某种原因在程序执行完毕后没有释放或无法释放,导致这段内存不能被操作系统回收再利用,这就造成了内存泄漏。内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,短时间少量的内存泄漏容易被忽视,而随着时间的推移,泄漏的内存越来越多,可用的内存越来越少,当内存泄漏积累到一定程度后,轻则性能受损,重则系统崩溃。不局限于内存泄漏,包括cpu占用、打开文件数、磁盘空间占用等其它系统资源也同理。
技术实现思路
本专利技术的目的在于提供一种基于趋势分析的系统资源泄漏测试方法,本专利技术能够通过趋势分析在泄漏初期就能检测出问题,同时本专利技术着眼于整个系统中运行的所有进程;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏,本专利技术实现了及时诊断资源泄露并且能够定位内存泄漏所发生的位置,方便后期维护,具有较好的实用性。着眼于整个系统中运行的所有进程,一段时间后有资源泄露问题的进程其资源必定会表现持续上升的趋势或者占用资源远超正常范围,根据这一特性可对产生资源泄露的进程进行筛选排查。本专利技术主要通过以下技术方案实现:一种基于趋势分析的系统资源泄漏测试方法,依赖Linux系统工具sar取样收集数据;根据设定的时间间隔周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件;运行数据展示脚本加载json文件读取数据,并对得到的数据进行可视化处理以实现图形化展示资源消耗趋势;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏。为了更好的实现本专利技术,进一步的,收集的数据包括进程消耗CPU/MEM的数据、打开的文件/文件夹占用磁盘空间的数据以及网卡每秒钟接收/发送的数据包/字节数、每秒钟接收/发送的压缩数据包、每秒钟接收的多播数据包的数据。为了更好的实现本专利技术,进一步的,sar数据收集通过/usr/lib/sa中的一个二进制可执行文件和两个脚本来完成,其中sa1、sa2为脚本,sadc为二进制可执行文件;所述sa1是调用sadc将性能数据收集到二进制日志文件中的一个Shell脚本;所述sa2是将当天二进制文件中所有的数据存储到文本文件的另一个Shell脚本,然后它将清除七天之内的所有日志文件。为了更好的实现本专利技术,进一步的,用户自定义收集系统资源情况数据的时间间隔和占用资源比例最高的目标个体数;通过运行show-info.py脚本查看时间段内总共收集的数据信息。为了更好的实现本专利技术,进一步的,依赖于python的matplotlib和tkinter模块对得到的数据进行可视化处理,实现图形化展示资源消耗趋势。为了更好的验证本专利技术的功能,进一步的,可以通过增加物理机数量或者相同的物理机划分成多台虚拟机来运行这一手段来复现系统资源泄露的问题,从而起到加速问题复现的作用,减少正常情况下复现资源泄露问题的时间消耗。本专利技术可以实现以线型图的形式展示系统资源消耗趋势,包括进程消耗CPU或内存趋势、打开文件/文件夹占用磁盘趋势以及网卡流量趋势。具体以内存泄漏检测为例,本专利技术脚本将数据收集和图形展示分隔开来,用户运行数据收集脚本并设置数据收集时间间隔参数,脚本将自动根据所设置的时间间隔收集数据并将其存储到文件中,当用户需要查看资源消耗趋势时,通过运行图形展示脚本将之前所收集到的数据展示出来。用户通过观察趋势图中展示的进程占用内存量是否持续增长来判断是否发生内存泄漏,并且能够定位内存泄漏所发生的位置。对于概率性出现的资源泄漏问题,解决问题的最大难点在于问题不复现,所以需要增加问题复现的概率,可以通过增加物理机数量或者相同的物理机划分成多台虚拟机来运行本专利技术的逻辑,从而起到加速问题复现的作用,减少测试复现问题的时间消耗。本专利技术主要方法为依赖Linux系统工具sar对当前系统状态进行取样收集数据。sar数据收集通过/usr/lib/sa中的一个二进制可执行文件和两个脚本来完成。sar数据收集器是一个位于/usr/lib/sa/sadc的二进制可执行文件。sa1、sa2为脚本,sadc为二进制可执行文件。第一个脚本sa1,是调用sadc将性能数据收集到二进制日志文件中的一个Shell脚本。sa1命令还确保了每天都使用不同的文件。第二个脚本sa2,是将当天二进制文件中所有的数据存储到文本文件的另一个Shell脚本,然后它将清除七天之内的所有日志文件。本专利技术中不同的脚本文件收集不同的数据,具体脚本对应收集的数据如下表1:表1对于具体需要获取的数据,可以在运行脚本时通过设置相应的参数获取,参数介绍如下表2:表2对于收集到的数据,将会自动保存到脚本所在的文件目录中的文件中,后续可通过运行数据展示脚本,以及依赖于python的matplotlib和tkinter模块对得到的数据进行可视化处理,实现图形化展示资源消耗趋势。根据图形的展示,当发现某个程序占用的资源量持续处于上升状态从未有下降的趋势,则说明这个程序在每次执行完毕后可能没有释放掉其占用的资源,因此可以判断这个程序可能造成了系统资源泄漏。基于趋势分析的系统资源泄漏测试的方法,至少包括如下步骤:1.设定所需获取的数据的参数以及收集数据的时间间隔参数。2.根据参数及设定的时间间隔定时周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件。3.运行数据展示脚本加载json文件读取数据,并绘制成线形图。4.根据线形图所展示的系统资源情况,分析是否产生了资源泄漏。本专利技术的优点在于,将数据收集与可视化分离,设置好时间间隔参数后,数据收集脚本可在系统后台持续运行,且I/O负载小。用户只需根据自己的需要隔一段时间运行数据展示脚本即可看到系统资源在脚本收集数据的时间段内的消耗情况及趋势。对于通过分析趋势图提早暴露出有系统资源泄漏的程序,可及时采取相应措施,能有效预防因系统资源泄漏而导致的性能受损甚至系统崩溃的问题。本专利技术的有益效果:(1)依赖Linux系统工具sar取样收集数据;根据设定的时间间隔周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件;运行数据展示脚本加载json文件读取数据,并对得到的数据进行可视化处理以实现图形化展示资源消耗趋势;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏。本专利技术能够通过趋势分析在泄漏初期就能检测出问题,同时本专利技术着眼于整个系统中运行的所有进程;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏,本专利技术实现了本文档来自技高网...

【技术保护点】
1.一种基于趋势分析的系统资源泄漏测试方法,其特征在于,依赖Linux系统工具sar取样收集数据;根据设定的时间间隔周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件;运行数据展示脚本加载json文件读取数据,并对得到的数据进行可视化处理以实现图形化展示资源消耗趋势;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏。

【技术特征摘要】
1.一种基于趋势分析的系统资源泄漏测试方法,其特征在于,依赖Linux系统工具sar取样收集数据;根据设定的时间间隔周期性扫描系统/proc目录下的内存文件,采样获取所需数据并保存为.json文件;运行数据展示脚本加载json文件读取数据,并对得到的数据进行可视化处理以实现图形化展示资源消耗趋势;若检测的程序占用的资源量持续处于上升状态且从未有下降的趋势,则判断这个程序造成了系统资源泄漏。2.根据权利要求1所述的一种基于趋势分析的系统资源泄漏测试方法,其特征在于,收集的数据包括进程消耗CPU/MEM的数据、打开的文件/文件夹占用磁盘空间的数据以及网卡每秒钟接收/发送的数据包/字节数、每秒钟接收/发送的压缩数据包、每秒钟接收的多播数据包的数据。3.根据权利要求2所述的一种基于趋势分析的系统资源泄漏测试方法,其特征在于,sar数据...

【专利技术属性】
技术研发人员:黄青霞刘韬范渊吴永越郑学新
申请(专利权)人:成都安恒信息技术有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1