一种JVM负载状态的评估方法、设备及存储介质与流程

文档序号:24941973发布日期:2021-05-04 11:35阅读:158来源:国知局
一种JVM负载状态的评估方法、设备及存储介质与流程

本发明涉及负载状态评估技术领域,尤其是涉及一种jvm负载状态的评估方法、设备及存储介质。



背景技术:

java是一种支持跨平台应用软件的面向对象的程序设计语言,它具有卓越的通用性、高效性、平台移植性,广泛运行在windows系统、linux系统、苹果等系统上,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,java更具备了显著优势和广阔前景。

jvm是javavirtualmachine(java虚拟机)的缩写,jvm是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

java应用运行在jvm之上,jvm的负载状态直接影响着java应用的运行水平。因此,现有监控jvm的流程具体如下:

1、选择某一具体的jvm的指标(例如fullgc频率),根据业务特点或经验值预先设定该指标的监控时间间隔和该指标的报警阈值(例如:2分钟内fullgc超过2次异常)。

2、按照预先设定的时间间隔,采集异常数据

3、发现异常,发出报警,通知用户现有技术中的jvm监控方法或系统主要具有以下缺点:

现有方法或系统仅对单个/多个指标本身做监控和报警,不能从整体上判断一个jvm负载状态

现有方法或系统中,虽然能够针对具体某项jvm的指标绘制变化曲线,但由于不能以数值的方式直观体现jvm负载状态,用户无法了解jvm负载状态的变化率。

现有方法或系统中,当应用指标发生异常时,一般以报警的方式通知用户,后续处理工作将由用户接手。因而,在发现jvm负载状态存在问题后,整体自动化处理和智能自我修复能力不强

现有方法或系统中,没有对jvm负载状态进行深度刻画,以至于jvm负载状态的监控及时性和准确性不高

综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种jvm负载状态的评估方法、设备及存储介质。

本发明的目的可以通过以下技术方案来实现:

一种jvm负载状态的评估方法,该方法包括以下步骤:

步骤1:采集jvm在某时间区间内的相关数据指标并计算出该时间区间内所有时刻的jvm的负载水平et并记录于某集合中;

步骤2:基于步骤1中的该集合计算得到所有时刻的jvm的负载水平et的域值c;

步骤3:再次针对jvm进行运行状态监控,采集jvm在新的时间区间内的相关数据指标并计算出该新的时间区间内所有时刻的jvm的负载水平et;

步骤4:判断步骤3中的新的时间区间内所有时刻的jvm的负载水平et与步骤2中的域值c,当满足判定条件时则发送异常发送通知给管理员,若不满足判定条件则返回至步骤1再次循环。

进一步地,所述的步骤1包括以下分步骤:

步骤101:记录jvm在某时间区间内接收到的请求和线程处理请求平均时长;

步骤102:通过jvm的接口获取t时刻jvm的粘滞线程数;

步骤103:通过jvm的启动配置获取t时刻jvm的最大线程数;

步骤104:基于jvm在某时间区间内接收到的请求和线程处理请求平均时长、t时刻jvm的粘滞线程数以及最大线程数计算得到该时间区间内所有时刻的jvm的负载水平et。

进一步地,所述步骤104中该时间区间内所有时刻的jvm的负载水平et,其计算公式为:

式中,et为该时间区间内所有时刻的jvm的负载水平,qt和rt为某时间区间内接收到的请求和线程处理请求平均时长,st为t时刻jvm的粘滞线程数,tt为t时刻jvm的最大线程数,δt为数据采集窗口。

进一步地,所述的步骤2包括以下分步骤:

步骤201:获取步骤1中的该集合,并得到该集合的均值和方差;

步骤202:基于该集合的均值和方差计算得到所有时刻的jvm的负载水平et的域值c。

进一步地,所述步骤202中的域值c,其计算公式为:

c=min(0.8,μ+3δ)

式中,μ和δ分别为该集合的均值和方差。

进一步地,所述jvm的负载水平et的运行区间为[0,1]。

进一步地,所述的步骤3包括以下分步骤:

步骤301:记录jvm在新的时间区间内接收到的请求和线程处理请求平均时长;

步骤302:通过jvm的接口获取在新的时间区间内t时刻jvm的粘滞线程数;

步骤303:通过jvm的启动配置获取在新的时间区间内t时刻jvm的最大线程数;

步骤304:基于jvm在新的时间区间内接收到的请求和线程处理请求平均时长、t时刻jvm的粘滞线程数以及最大线程数计算得到该新的时间区间内所有时刻的jvm的负载水平et。

进一步地,所述的步骤4中的判定条件为et>c。

本发明还提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的jvm负载状态的评估方法的步骤。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述的jvm负载状态的评估方法的步骤。

与现有技术相比,本发明具有以下优点:

(1)本发明一种jvm负载状态的评估方法,以解决jvm监控中并不能从整体上判断一个jvm负载状态,该方法包括:数据采集指标的确定;模型建立;异常检测。本发明能刻画jvm负载状态,并数值方式直观的体现jvm负载状态。

(2)本发明的评估方法可以应用于各种操作系统中,兼容性好。

附图说明

图1为本发明的方法流程示意图;

图2为本发明中jvm的内部线程运行机制示意图。

具体实施方式

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

具体实施例

本发明的目的在于提供一种jvm负载状态评估方法,并数值方式直观的体现应用健康状态。为了实现上述目的,研究了jvm内部线程运行机制,如图2所示。

jvm虚拟机接收到请求后,分配线程处理请求,当线程处理完毕任务后,回收资源,重复利用。对于jvm而言,线程是有限的,使用完毕jvm即无法为新的请求提供服务。

本发明提供一种负载状态评估模型,假设:

1、δt为数据采集窗口,单位:秒;

2、qt为jvm在((t-δt),t]区间内接收到的请求,受到前端用户的活动影响;

3、rt为jvm在((t-δt),t]区间段内线程处理请求平均时长,受到后端服务方的服务水平和jvm自身处理水平影响,单位:秒;

4、第t时刻jvm的最大线程数tt,受到jvm所在主机的性能影响;

5、第t时刻jvm的负载水平et,监控指标;

6、第t时刻jvm的粘滞线程数st,受到总线状态影响;

式中,et为该时间区间内所有时刻的jvm的负载水平,qt和rt为某时间区间内接收到的请求和线程处理请求平均时长,st为t时刻jvm的粘滞线程数,tt为t时刻jvm的最大线程数,δt为数据采集窗口。

理论上该值在[0,1]的区间类运行。该值是jvm负载状态的度量指标,也是jvm线程工作繁忙程度的指标。数值越大,表示jvm越繁忙。反之,亦然。

如图1所示为本发明的方法步骤流程图,具体阶段步骤包括:

第一阶段数据采集:

第一步,记录jvm在((t-δt),t]区间内接收到的请求和线程处理请求平均时长分别为qt,rt;

第二步,通过jvm的接口获取st;

第三步,通过jvm启动配置获取tt;

第四步,利用上述(1)式,计算et,并记录在集合d中;

循环上述步骤,一定时间,该时间的长短取决于具体项目对et敏感度的要求。

第二阶段计算et的域值:

在第一阶段中,获得集合d={ei},不难得到集合d的均值μ、方差δ,

定义域值(异常边界),c=min(0.8,μ+3δ)

第三阶段jvm运行状态监控:

第一步,记录jvm在((t-δt),t]区间内接收到的请求和线程处理请求平均时长分别为qt,rt

第二步,通过jvm的接口获取st;

第三步,通过jvm启动配置获取tt;

第四步,利用上述(1)式,计算et;

第五步,判定条件et>c,是否成立。如果成立则发送异常发送通知给管理员处理,否则跳到第一步,如此循环。

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

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