本发明专利技术提供了一种存储器消耗监控装置,用于监控处理器和存储器,包括:监控单元,监控存储器垃圾收集事件和服务请求的发生;相关性分析单元,确定所述服务请求与所述存储器垃圾收集事件之间的相关性;报告单元,连接至所述相关性分析单元,根据所述相关性分析单元的分析结果报告所述服务请求中的可疑请求。根据本发明专利技术的技术方案,可高效的获取存储器的使用情况,甄别出对系统资源(存储器)消耗巨大的请求处理程序,从而还可为提高服务器的性能提供有力保障。本发明专利技术还提供了一种存储器消耗监控方法。
【技术实现步骤摘要】
本专利技术涉及计算机
,具体而言,涉及。
技术介绍
目前多数企业管理软件均采用Java或者.net编写而成。其内存管理特点与上一代软件有区別。上一代软件的内存分配与释放均需要应用程序显式调用,并且在调用完成后立即生效(立即分配或者立即释放)。但是基于Java或者.net的程序并不是这样。它们的内存分配虽然仍然由应用程序调用,但是内存释放过程并不由应用程序代码控制,而是由托管内存管理器负责。托管内存管理器根据当前内存使用的情况自动释放不再使用的内存,并且重新整理内存空间结构,释放内存碎片。托管内存管理器释放不在使用的内 存,并重整理内存空间结构的过程被称为“垃圾回收”(GC, Garbage Collector)。企业管理软件中的应用服务器常常执行大量的服务请求任务。但是,在处理这些请求的过程中,只要有少数请求处理程序消耗相对较大量的存储器件,服务器性能也会急剧下降。为此,监控这些系统中的存储器消耗与请求相关性对于维持总体稳定是有用的。但是,当系统被高度利用时,监控存储器的活动本身会显著影响系统性能。相关技术中存在一些解决方案。例如直接监视应用服务器的内存提交量。但是对于托管程序来说,内存的释放过程是不可预期的。对于高压カ服务器,内存提交量总是会保持在一个相对固定的点。不能准确地反映这些内存提交量中,真正被程序使用的内存量。如果在监控内存提交量之前,強制要求GC回收所有不再使用的内存。随后再检查内存提交量。这样可以获得精确的存储器真实使用情況。但强制GC行为会暂停所有应用服务器工作线程,有时甚至时间长达数十秒。考虑到通常应用服务器的响应时间普遍低于I秒。显然这种方案对系统性能将产生显著的不良影响。其次,除了带有初始化动作的请求处理程序和另外ー些存在设计缺陷导致内存泄漏的请求处理程序。绝大多数请求处理程序虽然在执行过程中会分配内存,但是在处理完成后的一段事件内会释放这些内存。直接监控内存提交量不能发现在请求处理程序的执行过程中究竟分配了多少内存。因此,需要一种存储器消耗监控技术,可监控请求处理程序在执行过程中所分配的内容,且不会影响系统的性能。
技术实现思路
基于上述
技术介绍
的考虑,本专利技术的ー个目的是提供一种存储器消耗监控装置,可监控请求处理程序在执行过程中所分配的内容,且不会影响系统的性能。根据本专利技术的ー个方面,提供了一种存储器消耗监控装置,用于监控处理器和存储器,包括监控单元,监控存储器垃圾收集事件和服务请求的发生;相关性分析単元,确定所述服务请求与所述存储器垃圾收集事件之间的相关性;报告单元,连接至所述相关性分析単元,根据所述相关性分析単元的分析结果报告所述服务请求中的可疑请求。在该技术方案中,可监控存储器垃圾收集事件和发生的服务请求,建立存储器垃圾收集事件与服务请求之间的关系,根据该关系可确定可疑请求。在上述技术方案中,优选的,所述相关性分析単元包括相关性确定子单元,确定在每个所述存储器垃圾收集事件定义的时间间隔内所发生的服务请求以及服务请求所对应的发生次数;计算子単元,根据所述时间间隔内所述存储器垃圾收集事件所收集到的内存总量,以及各服务请求的发生次数,获取各所述服务请求的内存分配量,将内存分配量最大的服务请求作为可疑请求。根据存储器垃圾收集事件所收集到的内存总量以及各服务请求的次数可精确计算出每种服务请求所分配到的内存,避免了直接监控内存提交量不能发现在请求处理程序的执行过程中究竟分配了多少内存的问题,同时在相对精确的获得每种服务请求的内存分配情况同时,也尽可能减轻对系统的负担。在上述技术方案中,优选的,所述时间间隔的时段数大于等于所述服务请求的数 量。若服务请求的应用相关地址有多种,则需监控多个时间间隔,才能获取每种应用相关地址对应的服务请求所对应的内存量,也就是说,随着监控时段的増加,统计将越来越精确。在上述任一技术方案中,优选的,还可以包括提取单元,连接至所述相关性分析单元,根据所述服务请求的协议规范从所述服务请求中提取出应用相关地址,将所述应用相关地址作为所述服务请求的数据供所述相关性分析単元使用。服务请求多种多样,不同的协议有各自的规范,而应用相关地址才是本方案中所需要的,因此在服务请求中提取出应用相关地址,利用该应用相关地址来代表ー种服务请求。在上述任一技术方案中,优选的,所述相关性分析单元还包括排除子単元,若所述应用相关地址是第一次被分析,则排除所述应用相关地址对应的服务请求所在的时间间隔时段内的所有存储器垃圾收集事件和所有服务请求。在分解出应用相关地址后,需要判断该应用相关地址是否是第一次被分析,如果是,则考虑到很多请求处理过程都会在第一次请求发生时初始化ー些内存数据,因此,在本方案中将排除首次发现的请求,并且排除该请求所在时段内的所有存储器垃圾回收事件和服务请求。根据本专利技术的另一方面,还提供了一种存储器消耗监控方法,包括监控存储器垃圾收集事件和服务请求的发生;确定所述服务请求与所述存储器垃圾收集事件之间的相关性;根据所述相关性报告所述服务请求中的可疑请求。在该技术方案中,可监控存储器垃圾收集事件和发生的服务请求,建立存储器垃圾收集事件与服务请求之间的关系,根据该关系可确定可疑请求。在上述任一技术方案中,优选的,所述确定所述服务请求与所述存储器垃圾收集事件之间的相关性的步骤包括确定在每个所述存储器垃圾收集事件定义的时间间隔内所发生的服务请求以及服务请求所对应的发生次数;根据所述时间间隔内所述存储器垃圾收集事件所收集到的内存总量,以及各服务请求的发生次数,获取各所述服务请求的内存分配量,将内存分配量最大的服务请求作为可疑请求。根据存储器垃圾收集事件所收集到的内存总量以及各服务请求的次数可精确计算出每种服务请求所分配到的内存,避免了直接监控内存提交量不能发现在请求处理程序的执行过程中究竟分配了多少内存的问题,也提高了计算速度,减轻对系统的负担。在上述任一技术方案中,优选的,所述时间间隔的时段数大于等于所述服务请求的数量。若服务请求的应用相关地址有多种,则需监控多个时间间隔,才 能获取每种应用相关地址对应的服务请求所对应的内存量,也就是说,随着监控时段的増加,统计将越来越精确。在上述任一技术方案中,优选的,根据所述服务请求的协议规范从所述服务请求中提取出应用相关地址,将所述应用相关地址作为所述服务请求的数据供分析使用。服务请求多种多样,不同的协议有各自的规范,而应用相关地址才是本方案中所需要的,因此在服务请求中提取出应用相关地址,利用该应用相关地址来代表ー种服务请求。在上述任一技术方案中,优选的,若所述应用相关地址是第一次被分析,则排除所述应用相关地址对应的服务请求所在的时间间隔时段内的所有存储器垃圾收集事件和所有服务请求。在分解出应用相关地址后,需要判断该应用相关地址是否是第一次被分析,如果是,则考虑到很多请求处理过程都会在第一次请求发生时初始化ー些内存数据,因此,在本方案中将被排除首次发现的服务请求,并且排除该请求所在时段内的所有存储器垃圾回收事件和服务请求。根据本专利技术的技术方案,能准确反映内存提交量中真正被程序使用的内存量,可发现在请求处理程序的执行过程中究竟分配了多少内存,且不会影响系统的性能。附图说明图I示出了根据本专利技术的实施例的存储器消耗监控装置的框图;图2本文档来自技高网...
【技术保护点】
一种存储器消耗监控装置,用于监控处理器和存储器,其特征在于,包括:监控单元,监控存储器垃圾收集事件和服务请求的发生;相关性分析单元,确定所述服务请求与所述存储器垃圾收集事件之间的相关性;报告单元,连接至所述相关性分析单元,根据所述相关性分析单元的分析结果报告所述服务请求中的可疑请求。
【技术特征摘要】
【专利技术属性】
技术研发人员:杨历,
申请(专利权)人:用友软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。