一种计算机程序运行过程中监控方法与流程

文档序号:26405842发布日期:2021-08-24 16:20阅读:202来源:国知局
一种计算机程序运行过程中监控方法与流程

本发明涉及一种计算机程序运行过程中的监控方法,适用于各类对于程序执行有一定监控、审计需求的领域。



背景技术:

目前从事金融、工业生产等行业的用户在使用计算机程序时,往往存在对程序运行全程持续监控的要求,可以概括为实时性与准确性,实时性指的是尽可能快地生成监控结果,准确性指的是监控结果与实际期望监控到的内容要足够接近。同时程序在满足以上监控要求的前提下,还需要保证自身受到的性能损耗需要尽可能的小,以及对于存储资源的消耗需要尽可能的低(即只记录关心的数据)。而现有的程序监控方案可以分为几类,程序内部步骤截屏、外部定时截屏与程序外部录制,但这些方案都存在着各自的特点与不足。

内部步骤截屏,指监控逻辑与业务逻辑在程序的同一个线程中执行,并通过在每个关键步骤之间进行截屏。因为截屏操作会穿插在程序的业务过程中,如果监控级别较高(即需要监控的操作步骤较多),则会很明显的提高截屏操作在程序执行过程中的占比,进而拖慢完整业务执行的总耗时。该方法准确性很高,因为程序在监控操作的进行过程中并没有进行业务操作,整个监控过程前后的状态是一致的;而实时性也很好,因为截屏操作从开始到完成通常会有200ms左右的执行时间,一般来说是可以接受的;对于存储资源的消耗是非常友好的,因为每次截屏的时机都是用户真正关心的,所以并不存在无意义的数据;但对于程序性能的损耗是极大的,因为该方法相当于在每个需要监控的关键步骤之间增加了一个环节,监控要求越高,需要监控的步骤越多,总耗时也会显著增加。

外部定时截屏,指监控逻辑与业务逻辑在程序不同的线程中执行,监控与步骤无关,只需要定时地去进行。该方法实时性与内部步骤截屏方法一致,但对于程序性能影响极小,因为监控逻辑不关心业务逻辑,只是在定时地去重复执行,因此程序的总耗时不会因为引入该方法而显著增加;但准确性很差,因为监控逻辑并不知道此刻是否需要进行监控,所以有一定可能用户关心的时机恰好在两次监控操作之间;对于存储资源的损耗也较大,同样因为监控逻辑不知道当前时刻是否需要进行监控,所以会有大量的在不需要监控的时机下产生的监控数据,从而增加了对于存储空间的消耗。

外部录制,指程序启动一个独立的线程或是进程,将当前屏幕的一切动作以视频的形式进行录制。该方法准确性极好,因为将程序执行的全程录制下来后,视频文件必然会包含程序执行时的一切操作,因此用户能够从视频文件中随意查找任意时刻的程序执行状况;与其它外部监控的方法一样,该方法同样不会对程序性能产生明显影响;而该方法的实时性较差,因为尽管视频可以实时地录制,但要将产生的结果同步地传输给监控端,则基于视频的性质,使用串流的方式不仅对网络要求极高,而且也会有明显的延迟,如果等待视频结束后传输整个视频文件,那实时性还会更加大打折扣;而对于存储资源的消耗更加严重,因为视频包含了完整的执行过程,而用户真正关心的往往只是视频中的一系列时间点,即便针对视频进行压缩,也仍然会浪费大量的存储空间。



技术实现要素:

本发明的目的就是为了解决以上方法中存在的显著缺陷,提出一种准确性、实时性能够满足要求,并且性能与存储资源利用也有显著改善的程序运行监控方法。

为实现上述目的,本发明提供如下技术方案:一种计算机程序运行过程中监控方法需要支持多线程执行,即支持使用外部定时截屏和外部录制两种方案;

在执行业务逻辑的主线程之外,启动两个线程,具体步骤如下:步骤一、管理屏幕录制简称线程a,提供开始与结束视频录制的能力,提供屏幕录制的开始时间以及将指定时间点转换为视频时间点的能力,以及将视频指定时刻的画面提取为图片的能力;

步骤二、接受监控请求,简称线程b,将监控请求转换为具体的时刻,通知屏幕录制线程获取截图,并需要支持用户根据实际需求扩展处理,包含保存、发送截图文件的能力;

步骤三、程序需要支持在关键步骤中增加监控步骤,即支持使用内部步骤截屏方案。

优选的,所述的线程a中支持录制结果(即视频文件)的管理,提供在按照时间段分段录制的情况下定位到准确的视频段的能力。

优选的,所述步骤三中监控步骤如下:

1-1、在程序启动时,启动线程a和线程b,线程a开始屏幕录制;

1-2、在业务线程运行到需要监控的步骤时,通知线程b,随后继续执行业务逻辑;

1-3、线程b在接受到业务线程的请求后,立刻获取当前时间,并将当前时间通知线程a;

1-4、线程a接受到线程b发送的时刻后,计算得出该时刻在当前正在录制视频的时间点;

1-5、线程a通过计算得出的时间点,在录制的视频文件中获取该时间点的截图,将截图发送给线程b;

1-6、线程b接受到截图后,按照用户的需要对截图进行处理。

优选的,通过降低图片质量以进一步节省存储资源的使用,对录制视频的视频质量,如分辨率、帧率进行降低,此时产生的图片体积也会进一步降低,但相应地会损失一部分准确性,因为截图画面质量的降低可能会使得一些微小的位置变得模糊而无法达到监控的要求。

优选的,通过分片录制视频以进一步节省存储资源的使用,线程a内部对视频文件进行分段录制,即以一定的时间长度或是一定的视频文件体积作为分段依据,在分段逻辑较为复杂时,增加监控步骤的执行时间,但一般来说不会超过10ms。

优选的,通过改为定时截图的方式,以达到更少的存储资源使用。

优选的,所述的线程b在启动时,记录监控的开始时间,随后在稍作延迟,以固定的时间间隔进行循环,并以此为依据将未来的时间分段,当监控请求到达时,将当前时间存入内存队列,在一次循环开始时,获取当前的循环次数并得出所在的时间段,并去检查内存队列中处于所处时间段是否有记录,若没有,则继续按照固定时间间隔循环到下一个时间段;若有,则以所处时间段的开始时间(也可以是中点、或是结束时间)向线程a请求截图,并删除队列中处在该时间段内的记录,并等待固定时间间隔减去本次循环耗时的时间,然后开始下个时间段。

与现有技术相比,本发明的有益效果是:与内部步骤截屏对比:尽管同样在业务逻辑中加入了额外的操作,但本方法的操作耗时要显著小于直接截图。截图耗时通常在200ms左右,而本方法增加的步骤基本耗时小于5ms;因为本方法获取监控时刻时,业务线程也没有在进行业务操作,因此根据该时刻获取截图,与直接在该时刻截图的准确性是一致的;实时性本方法略优,因为从视频中提取指定时刻图片的操作耗时通常在100ms左右,要少于截图操作的耗时200ms,因此在出现监控请求到产生监控结果的过程中,本方法耗时更少;而产生的截图数是一致的,因此对于存储资源的消耗上无明显差异。

与外部定时截屏对比:本方法因为能够获取准确的需监控的时刻,所以准确性更优;实时性对比与内部步骤截屏情况相同,本方法更优;而本方法仅会对于有监控需要的步骤进行截屏,因此对存储资源的消耗量少很多,比如持续一小时,共20个监控点,本方法只会有20张截图,而定时截屏只有在时间间隔设置为3分钟一次的情况下,截图数量才会与本方法一致,但一般来说尽可能全面覆盖监控点的时间间隔应该在1~5秒左右,因此在能够覆盖到所有监控点的情况下,本方法截图数会少1*60*60/5–20=700张;总计执行时间本方法略多,约为监控点数量乘以单次监控逻辑耗时(约5ms),按照上述场景会延长100ms的执行时间。

与外部录制对比:本方法在实时性上本方法更优,因为通过网络传输时,截图要消耗更少的带宽。如果是本地监控,则外部录制的实时性要稍好一些;而本方法仅会对于有监控需要的步骤进行截屏,因此对存储资源的消耗量少很多,比如持续一小时,共20个监控点,本方法只会有20张截图,约2mb左右,而在720p分辨率、16fps的情况下,1个小时的视频文件尺寸约为252mb左右,该场景下本方法在存储空间上能够节省100倍,总计执行时间本方法略多,约为监控点数量乘以单次监控逻辑耗时(约5ms),按照上述场景会延长100ms的执行时间。

附图说明

图l是现有三种监控方式的流程示意图;

图2是本监控方式的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本实施例提供一种技术方案:参照图1-2所示,一种计算机程序运行过程中监控方法包含3个步骤,并且需要对前两个步骤完成时进行监控。此时,实施方式步骤如下:

步骤一.修改程序:

a.增加录制线程(命名为线程r),实现以下功能:

1.1、启动屏幕录屏,并记录开始时间;

1.2、停止屏幕录屏,暴露为方法(命名为r-stop),停止录屏后退出;

1.3、使用指定时间减去开始时间,获取指定时间在视频中对应的时刻;

1.4、对外暴露获取截图方法(命名为getimage),参数为具体的时刻,将该时刻作为参数调用方法iii,使用视频时间点从视频文件中获取对应时间点的画面,并返回。

b.增加图片提取线程命名为线程c,实现以下功能:

2.1、将图片保存到本地指定路径;

2.2、对外暴露监控方法(命名为capture),获取当前时间,并以此作为参数调用录制线程暴露的方法,将返回的图片结果使用方法i进行处理;

2.3、对外暴露停止方法(命名为c-stop),调用r-stop方法后退出;

2.4、在步骤2.1与步骤2.2之间,在步骤2.2与步骤2.3之间,分别加入图片提取线程暴露的方法;

步骤二、启动程序,同时启动业务线程、线程c和线程r。

步骤三、业务线程步骤:

3-a、业务线程执行步骤一结束后,异步调用capture方法,不需要等待结束,直接进行步骤2。

3-b、业务线程执行步骤二结束后,异步调用capture方法,不需要等待结束,直接进行步骤3。

3-c、业务线程结束,调用c-stop方法,等待返回后退出程序。

步骤四、线程c步骤:

4-a、在3-a请求到达capture方法后,获取当前时刻a,将时刻a传入getimage方法,等待处理完毕后,将返回的图片存储到本地,命名为1.png。

4-b、在3-b请求到达capture方法后,获取当前时刻b,将时刻b传入getimage方法,等待处理完毕后,将返回的图片存储到本地,命名为2.png。

4-c、在3-c请求到达c-stop方法时,调用r-stop方法,等待返回后,线程结束。

步骤五、线程r步骤:

5-a、在4-a请求到达getimage方法后,通过计算获得时刻a对应视频的时间点aa,从视频文件中获取aa时刻的画面,返回线程c。

5-b、在4-b请求到达getimage方法后,通过计算获得时刻b对应视频的时间点bb,从视频文件中获取bb时刻的画面,返回线程c。

5-c、在4-c请求到达r-stop方法时,停止录制视频,并结束当前线程。

本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合,本说明书系统实施例,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1