一种中间件运行监测的方法、装置及计算机存储介质与流程

文档序号:16134303发布日期:2018-12-01 00:44阅读:418来源:国知局

本文涉及但不限于自动驾驶技术,尤指一种中间件运行监测的方法、装置及计算机存储介质。

背景技术

在信息系统中,不少性能问题是由应用中间件的造成。应用中间件主要用于帮助编码人员处理与业务逻辑没有太大关系,而又必须处理的经常性事务。应用中间件在运行过程中,也会给系统性能带来问题,开发人员和测试人员往往忽视了应用中间件本身对应用性能包括:交易吞吐量的制约、响应时间的影响、交易成功率的影响等。

网络球应用服务器(was)是一种中间件,其性能对应用系统的运行起着决定性作用;测试人员在性能测试过程中、运维人员在运维过程中经常碰到因中间件性能瓶颈而导致应用系统出现运行缓慢的情况,严重影响了系统的运行和客户感知,因此对was的性能监控就显得尤为重要。目前,针对was的监控主要有如下三个性能指标:爪哇虚拟机(jvm)、线程池、爪哇数据库连接(javadatabaseconnectivity,jdbc)连接池。目前,对was进行监控主要通过人工登录was控制台后,使用was自带工具性能监控基础结构(pmi,performancemonitoringinfrastructure)进行监控,包括jvm、线程池中线程使用情况、jdbc连接池中数据源使用情况。

上述方法需要通过人为参与的方式实现was当前性能指标、系统当前的运行情况的监控。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本发明实施例提供一种中间件运行监测的方法、装置及计算机存储介质,能够实现中间件运行的自动监测。

本发明实施例提供了一种中间件运行监测的方法,包括:

划分性能监控基础结构pmi数据为两种或两种以上类别后,获取各种类的pmi数据;

对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;

根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。

可选的,所述划分pmi数据为两种或两种以上类别包括:

将所述pmi数据划分为包括以下部分或全部类别的pmi数据:爪哇虚拟机jvm数据、线程池数据、爪哇数据库连接jdbc连接池数据。

可选的,所述提取pmi数据中包含的性能数据信息包括:

划分获得的所述pmi数据中包含jvm数据时,通过预设的命令行管理工具,从所述jvm数据中提取以下部分或全部的性能数据信息:内存池中使用的内存大小、总堆栈大小;

划分获得的所述pmi数据中包含线程池数据时,通过预设的命令行管理工具,从所述线程池数据中提取以下部分或全部的性能数据信息:线程池中活动的线程个数、线程池大小;

划分获得的所述pmi数据中包含jdbc连接池数据时,通过预设的命令行管理工具,从所述jdbc连接池数据中提取以下部分或全部的性能数据信息:连接池中空余的连接数、正在等待的线程数。

可选的,所述提取pmi数据中包含的性能数据信息之后,所述方法还包括:

将提取的所述性能数据信息,按照pmi所属种类的不同,区分写入预设的文件中;

其中,所述文件包括文本文件。

可选的,从所述jvm数据中提取的性能数据信息包括:内存池中使用的内存大小和总堆栈大小时,所述进行中间件的运行监测包括:

将所述内存池中使用的内存大小除以所述总堆栈大小后,计算获得jvm内存使用率;当计算获得的所述jvm内存使用率大于第一预设百分比阈值时,进行内存使用告警;

从所述线程池数据中提取的性能数据信息包括:线程池中活动的线程个数和线程池大小时,将所述线程池中活动的线程个数除以所述线程池大小后,计算获得线程使用率;当计算获得的所述线程使用率大于第二预设百分比阈值时,进行线程使用告警;

从所述jdbc连接池数据中提取的性能数据信息包括:连接池中空余的连接数和正在等待的线程数时,如果所述连接池中空余的连接数为零,或者所述正在等待的线程数大于零,进行连接池中无可用连接的告警。

另一方面,本发明实施例还提供一种中间件运行监测的装置,包括:获取单元、提取单元、监测单元;其中,

获取单元用于:划分性能监控基础结构pmi数据为两种或两种以上类别后,获取各种类的pmi数据;

提取单元用于:对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;

监测单元用于:根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。

可选的,所述获取单元具体用于:

将所述pmi数据划分为包括以下部分或全部类别的pmi数据:爪哇虚拟机jvm数据、线程池数据、爪哇数据库连接jdbc连接池数据;

获取各种类的pmi数据。

可选的,所述提取单元具体用于:

划分获得的所述pmi数据中包含jvm数据时,通过预设的命令行管理工具,从所述jvm数据中提取以下部分或全部的性能数据信息:内存池中使用的内存大小、总堆栈大小;

划分获得的所述pmi数据中包含线程池数据时,通过预设的命令行管理工具,从所述线程池数据中提取以下部分或全部的性能数据信息:线程池中活动的线程个数、线程池大小;

划分获得的所述pmi数据中包含jdbc连接池数据时,通过预设的命令行管理工具,从所述jdbc连接池数据中提取以下部分或全部的性能数据信息:连接池中空余的连接数、正在等待的线程数。

可选的,所述装置还包括写入单元,用于:

将提取的所述性能数据信息,按照pmi所属种类的不同,区分写入预设的文件中;

其中,所述文件包括文本文件。

可选的,所述监测单元具体用于:

从所述jvm数据中提取的性能数据信息包括:内存池中使用的内存大小和总堆栈大小时,将所述内存池中使用的内存大小除以所述总堆栈大小后,计算获得jvm内存使用率;当计算获得的所述jvm内存使用率大于第一预设百分比阈值时,进行内存使用告警;

从所述线程池数据中提取的性能数据信息包括:线程池中活动的线程个数和线程池大小时,将所述线程池中活动的线程个数除以所述线程池大小后,计算获得线程使用率;当计算获得的所述线程使用率大于第二预设百分比阈值时,进行线程使用告警;

从所述jdbc连接池数据中提取的性能数据信息包括:连接池中空余的连接数和正在等待的线程数时,如果所述连接池中空余的连接数为零,或者所述正在等待的线程数大于零,进行连接池中无可用连接的告警。

再一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述中间件运行监测的方法。

与相关技术相比,本申请技术方案包括:划分性能监控基础结构(pmi)数据为两种或两种以上类别后,获取各种类的pmi数据;对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。本发明实施例实现了中间件运行的自动监测。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例中间件运行监测的方法的流程图;

图2为本发明实施例中间件运行监测的装置的结构框图;

图3为本发明应用示例数据收集层次结构示意图;

图4为本发明应用示例性能数据信息的处理流程。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了使本发明实施例的方案陈述清楚,以下对本发明实施例涉及的部分定义进行定义说明:

中间件:(middleware)是一种独立的系统软件,它处于操作系统和应用软件之间,应用软件借助于中间件在不同的技术之间实现资源的共享。网络球应用服务器(was,websphereapplicationserver)是一种中间件产品。was提供安全专家服务,是一项针对web应用程序的安全服务,通过来自一线的经验实现用户所需要的安全服务,保障web应用程序的安全,有效减少用户单位由于安全问题引起的不可估量的损失。

性能监控基础结构(pmi,performancemonitoringinfrastructure);

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

线程池是一种多线程处理形式,处理过程中将任务添加到队列中,在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。

连接池是创建和管理一个连接的缓冲池的技术,连接池可以被任何需要它们的线程使用。

图1为本发明实施例中间件运行监测的方法的流程图,如图1所示,包括:

步骤101、划分性能监控基础结构pmi数据为两种或两种以上类别后,获取各种类的pmi数据;

可选的,本发明实施例划分pmi数据为两种或两种以上类别包括:

将所述pmi数据划分为包括以下部分或全部类别的pmi数据:爪哇虚拟机jvm数据、线程池数据、爪哇数据库连接jdbc连接池数据。

需要说明的是,本发明实施例还可以根据中间件的运行监测需求,将pmi数据划分为其他分类。

步骤102、对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;

步骤103、根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。

可选的,本发明实施例提取pmi数据中包含的性能数据信息包括:

划分获得的所述pmi数据中包含jvm数据时,通过预设的命令行管理工具,从所述jvm数据中提取以下部分或全部的性能数据信息:内存池中使用的内存大小、总堆栈大小;

划分获得的所述pmi数据中包含线程池数据时,通过预设的命令行管理工具,从所述线程池数据中提取以下部分或全部的性能数据信息:线程池中活动的线程个数、线程池大小;

划分获得的所述pmi数据中包含jdbc连接池数据时,通过预设的命令行管理工具,从所述jdbc连接池数据中提取以下部分或全部的性能数据信息:连接池中空余的连接数、正在等待的线程数。

可选的,本发明实施例提取pmi数据中包含的性能数据信息之后,本发明实施例方法还包括:

将提取的所述性能数据信息,按照pmi所属种类的不同,区分写入预设的文件中;

其中,所述文件包括文本文件。

需要说明的是,本发明实施例文件还可以包括其他可读文件。

可选的,从所述jvm数据中提取的性能数据信息包括:内存池中使用的内存大小和总堆栈大小时,所述进行中间件的运行监测包括:

将所述内存池中使用的内存大小除以所述总堆栈大小后,计算获得jvm内存使用率;当计算获得的所述jvm内存使用率大于第一预设百分比阈值时,进行内存使用告警。

可选的,从所述线程池数据中提取的性能数据信息包括:线程池中活动的线程个数和线程池大小时,将所述线程池中活动的线程个数除以所述线程池大小后,计算获得线程使用率;当计算获得的所述线程使用率大于第二预设百分比阈值时,进行线程使用告警。

可选的,从所述jdbc连接池数据中提取的性能数据信息包括:连接池中空余的连接数和正在等待的线程数时,如果所述连接池中空余的连接数为零,或者所述正在等待的线程数大于零,进行连接池中无可用连接的告警。

与相关技术相比,本申请技术方案包括:划分性能监控基础结构(pmi)数据为两种或两种以上类别后,获取各种类的pmi数据;对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。本发明实施例实现了中间件运行的自动监测。

图2为本发明实施例中间件运行监测的装置的结构框图,如图2所示,包括:获取单元、提取单元、监测单元;其中,

获取单元用于:划分性能监控基础结构pmi数据为两种或两种以上类别后,获取各种类的pmi数据;

可选的,本发明实施例获取单元具体用于:

将所述pmi数据划分为包括以下部分或全部类别的pmi数据:爪哇虚拟机jvm数据、线程池数据、爪哇数据库连接jdbc连接池数据;

获取各种类的pmi数据。

提取单元用于:对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;

可选的,本发明实施例提取单元具体用于:

划分获得的所述pmi数据中包含jvm数据时,通过预设的命令行管理工具,从所述jvm数据中提取以下部分或全部的性能数据信息:内存池中使用的内存大小、总堆栈大小;

划分获得的所述pmi数据中包含线程池数据时,通过预设的命令行管理工具,从所述线程池数据中提取以下部分或全部的性能数据信息:线程池中活动的线程个数、线程池大小;

划分获得的所述pmi数据中包含jdbc连接池数据时,通过预设的命令行管理工具,从所述jdbc连接池数据中提取以下部分或全部的性能数据信息:连接池中空余的连接数、正在等待的线程数。

监测单元用于:根据从各种类pmi数据中提取的性能数据信息,进行中间件的运行监测。

可选的,本发明实施例装置还包括写入单元,用于:

将提取的所述性能数据信息,按照pmi所属种类的不同,区分写入预设的文件中;

其中,所述文件包括文本文件。

可选的,本发明实施例监测单元具体用于:从所述jvm数据中提取的性能数据信息包括:内存池中使用的内存大小和总堆栈大小时,将所述内存池中使用的内存大小除以所述总堆栈大小后,计算获得jvm内存使用率;当计算获得的所述jvm内存使用率大于第一预设百分比阈值时,进行内存使用告警;

可选的,本发明实施例监测单元具体用于:从所述线程池数据中提取的性能数据信息包括:线程池中活动的线程个数和线程池大小时,将所述线程池中活动的线程个数除以所述线程池大小后,计算获得线程使用率;当计算获得的所述线程使用率大于第二预设百分比阈值时,进行线程使用告警;

可选的,本发明实施例监测单元具体用于:从所述jdbc连接池数据中提取的性能数据信息包括:连接池中空余的连接数和正在等待的线程数时,如果所述连接池中空余的连接数为零,或者所述正在等待的线程数大于零,进行连接池中无可用连接的告警。

一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述中间件运行监测的方法。

以下通过应用示例对本发明实施例方法进行清楚详细的说明,应用示例仅用于陈述本发明,并不用于限定本发明的保护范围。

应用示例

本发明应用示例,为了帮助识别性能问题及调优运行web应用程序的环境,ibm的中间件(was,websphereapplicationserver)收集性能数据并提供接口来让外部的应用程序监控这些性能数据。数据是通过pmi收集在was和客户应用程序中的,然后pmi数据通过不同的接口向用户公开。pmi)提供服务器端监视和客户机端应用程序编程接口(api)检索性能数据。pmi保留整个websphereapplicationserver域(包括多个节点和服务器)内的统计数据。每个节点可以包含一个或多个websphereapplicationserver。每个服务器将pmi数据组织到模块和子模块中。图3为本发明应用示例数据收集层次结构示意图,如图3所示,网络结构中包含多个节点和服务器。

本发明应用实施例,使用java管理扩展(jmx,javamanagementextensions,是一个为应用程序植入管理功能的框架。jmx是一套标准的代理和服务,实际上,用户可以在任何java应用程序中使用这些代理和服务实现管理)接口开发程序监控was的关键性能指标,包括jvm、线程池、jdbc连接池,将jvm的内存池中使用的内存大小(usedmemory)和总堆栈大小(heapsize)、线程池中的线程池中活动的线程个数(activecount)和线程池大小(poolsize)、jdbc连接池中的空余的连接数(freepoolsize)和正在等待的线程数(waitingthreadcount)等关键指标提取出来,放到文件中实现自动监控和自动告警。

1、通过可管理资源(例如、perfmbean)中的获取对象(getstatsobject)和获取数组(getstatsarray)方法访问pmi数据,需要将可管理资源(例如、mbean)对象名(mbeanobjectname)传递到perfmbean。2、使用以下各mbean类型获取相关类别中的pmi数据:jvm:java虚拟机pmi数据;threadpool:线程池pmi数据;jdbcprovider:jdbc连接池pmi数据;3、查询每个mbean类型的mbeanobjectname要使用api客户端管理(adminclientapi)。查询所有的mbean,然后与mbean类型匹配;也可以通过设置mytype(类型)、mynode(节点名)和myserver(was中要监控的server名)值进行查询。当调用adminclient类查询mbeanobjectname时获取设置的值。4、将上面获取到的jvm的内存池中使用的内存大小和总堆栈大小、线程池中的线程池中活动的线程个数和线程池大小、jdbc连接池中的连接池中空余的连接数和正在等待的线程数等关键指标用shell命令获取出来,放到文本文件中。然后用壳(shell)命令从文本文件中分别获取上述数值的大小,如果超过一定的阈值,可以认为系统出现性能问题,这样可以借助第三方告警系统;例如、通过短信或者邮件将告警信息反馈给用户,实现自动监控。

图4为本发明应用示例性能数据信息的处理流程,如图4所示,包括:

步骤401、将获取的pmi数据划分为爪哇虚拟机(jvm)数据、线程池数据、爪哇数据库连接(jdbc)连接池数据;

步骤4021、根据获取对象和获取数组方法获取jvm数据;

步骤4022、根据获取对象和获取数组方法获取线程池数据;

步骤4023、根据获取对象和获取数组方法获取jdbc连接池数据;

步骤403、对获取的各种类pmi数据,分别提取pmi数据中包含的性能数据信息;

划分获得的所述pmi数据中包含jvm数据时,通过预设的命令行管理工具,从所述jvm数据中提取以下部分或全部的性能数据信息:内存池中使用的内存大小、总堆栈大小;

划分获得的所述pmi数据中包含线程池数据时,通过预设的命令行管理工具,从所述线程池数据中提取以下部分或全部的性能数据信息:线程池中活动的线程个数、线程池大小;

划分获得的所述pmi数据中包含jdbc连接池数据时,通过预设的命令行管理工具,从所述jdbc连接池数据中提取以下部分或全部的性能数据信息:连接池中空余的连接数、正在等待的线程数。

步骤404、将提取到的性能数据信息写入预设的文本文件中;

步骤405、通过壳脚步,对文本文件中的性能数据信息进行分析后,实现中间件运行监控。

本发明应用示例可以实现针对was性能指标,实现自动监控和自动告警;在电信行业中,自动监控脚本可以接入经分系统,在经分系统中以图表的形式直观展示was性能参数的指标,以此判断系统运行情况及系统瓶颈。

具体的,对jvm数据本发明应用示例监测was性能的过程包括:

(1)、先用jmx方法编写python(py)脚本,里面定义获取对象(getstatsobject)和获取数组(getstatsarray)等方法(指定tpye=jvm)。

(2)、利用was的wsadmin(wsadmin是was提供的命令行管理工具,可以使用它以交互方式或通过使用jacl脚本文件来运行管理命令)方法,将上面定义的jvm等指标获取出来,然后将获取的指标先存放到文本文件中。

(3)、本发明应用示例获取的指标包含很多选项,使用sed(streameditor,是一项linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大)、awk(awk是一种文本处理工具。它不仅是linux中也是任何环境中现有的功能最强大的数据处理引擎之一)等命令要将内存池中使用的内存大小和总堆栈大小获取出来。

(4)、将usedmemory除以heapsize表示jvm内存使用率,本发明应用示例假设设定超过90%的阈值时,可以认为内存使用率过高,此时会出现性能问题,可以借助操作系统的告警机制,短信或者邮件发送给责任人,请责任人及时关注。

对线程池数据,本发明应用示例监测was性能的过程包括:

(1)、先用jmx方法编写py脚本,里面定义获取对象和获取数组等方法(指定tpye=threadpool)。

(2)、利用was的wsadmin方法,将上面定义的threadpool等指标获取出来,然后将获取的指标先存放到文本文件中。

(3)、上述获取的指标包含很多选项,使用sed、awk等命令要将线程池中活动的线程个数和线程池大小获取出来。

(4)、本发明应用示例将activecount除以poolsize表示线程池中线程使用率,假设设定超过90%的阈值时,确定线程池使用率过高,此时会出现性能问题,可以借助操作系统的告警机制,短信或者邮件发送给责任人,请责任人及时关注。

对jdbc连接池,本发明应用示例监测was性能的过程包括:

(1)、先用jmx用法编写py脚本,里面定义获取对象和获取数组等方法(指定tpye=jdbcprovider)。

(2)、利用was的wsadmin用法,将上面定义的jdbc连接池中的指标获取出来,然后将获取的指标先存放到文本文件中。

(3)、上述获取的指标包含很多选项,使用sed、awk等命令要将连接池中空余的连接数和正在等待的线程数获取出来。

(4)、本发明应用实施例,假设freepoolsize为0,或者waitingthreadcount大于0时,确定连接池中无可用的连接,此时会出现性能问题,可以借助操作系统的告警机制,短信或者邮件发送给责任人,请责任人及时关注。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的每个模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明不限制于任何特定形式的硬件和软件的结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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