进程状态监控方法及单元技术

技术编号:6864829 阅读:267 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了进程状态监控方法及单元。预先设定每个被监控进程的每个实例对应一个状态文件,且所有状态文件互不重叠;方法包括:一个被监控进程的一个实例启动,该实例在自身的状态文件上加互斥锁,并将自身从启动到停止过程中的各个状态信息写入该状态文件中;监控进程从所述被监控进程的所述实例的状态文件中读取状态信息。本发明专利技术提高了进程状态监控的准确性、稳定性和通用性。

【技术实现步骤摘要】

本专利技术涉及计算机应用
,具体涉及进程监控方法及单元。
技术介绍
进程是计算机应用软件运行的一个实例,对进程状态的监控和管理是计算机软件管理的一个重要范畴。一个好的应用程序,尤其是对外提供服务的应用程序,必须能够将其内部运行状态实时反馈给外部系统,供外界对其进行监控、管理和维护。一旦进程运行出现问题,外界能够及时获知,并进而采取相应的对策如重新启动进程等。对进程状态监控的准确性,直接影响到应用软件的可用性。现有对进程进行监控的方法主要有两种第一种通过操作系统提供的应用程序接口(API,ApplicationProgramming hterface)对操作系统中运行的进程进行监控。各种不同的操作系统都提供了系统监控的 API,能够监控到系统中正在运行的各个进程状态,此方式能实时得到进程的中央处理单元 (CPU, Central Processing Unit)利用率、内存占用率等通用信息。第二种进程通过打开特定的套接字(Socket)端口,与外部程序通信并进行数据交互,将进程的内部状态信息反馈给外部程序。第一种方案存在以下缺点—、监控数据不完整通过操作系统提供的API只能获知进程是否正在运行,并得到CPU、内存等通用信息,无法获知进程更具体的内部状态信息,例如一个服务进程在开始启动到能够正常提供服务有一个时间间隔,此时进程的状态应该是“正在启动”,而不是通过操作系统的API获知的“已经启动并能提供服务”。二、跨平台能力较低对不同的操作系统需要使用不同的API进行监控,使得监控软件的跨平台能力降低。三、无法对多实例进程的各个实例进行区分同一个操作系统中如果同时启动同一个应用程序的多个实例,操作系统无法区分具体需要监控哪个实例。对基于Java虚拟机的服务进程进行监控时该问题尤其突出,系统中所有使用Java虚拟机的程序使用操作系统提供的API取到的进程名都是“java”,无法区分哪个进程是需要监控的进程。第二种方案存在以下缺点一、可能出现监控冲突=Socket端口是操作系统中的一类重要资源,不同的进程不能绑定相同的端口以提供服务,因此应用程序启动时,如果监控端口已经被其它进程占用了,就会产生监控失败的问题。二、Socket资源对操作系统依赖过高当操作系统发生问题时,Socket端口可能会误认为被监控进程已经停止,从而不继续提供监控服务,此时监控操作将会失败。在进程的监控过程中,一旦由于外部原因导致获取的监控数据出现问题,就可能导致外部监控程序对被监控进程执行误操作如将正常运行的进程重启等,此类误操作导致的后果往往很严重。因此,亟需一种稳定、简单、通用的进程状态监控方法。
技术实现思路
本专利技术提供进程状态监控方法及单元,以提高监控进程状态的准确性、稳定性和通用性。本专利技术的技术方案是这样实现的一种进程状态监控方法,预先设定每个被监控进程的每个实例对应一个状态文件,且所有状态文件互不重叠,该方法包括一个被监控进程的一个实例启动,该实例在自身的状态文件上加互斥锁,并将自身从启动到停止过程中的各个状态信息写入该状态文件中;监控进程从所述被监控进程的所述实例的状态文件中读取状态信息。所述状态信息为正在启动、已经启动、正在停止或已经停止。所述监控进程从所述被监控进程的所述实例的状态文件中读取状态信息之前进一步包括监控进程定时查询所述被监控进程的所述实例的状态文件,判断是否该状态文件不存在或者未加锁,若是,则确定所述实例未启动或已停止;否则,执行所述从所述被监控进程的所述实例的状态文件中读取状态信息的动作。当监控进程发现所述被监控进程的所述实例的状态文件加锁时,所述方法进一步包括监控进程发现所述状态文件中的状态信息在预设时长内未被更新,则执行实例异常操作。所述该实例在自身的状态文件上加互斥锁之后进一步包括该实例定时将自身的资源占用信息写入自身的状态文件中;且,监控进程定时从所述实例的状态文件中读取资源占用信息;或者,该实例在自身发生运行错误现象时,将错误信息写入自身的状态文件中;且,监控进程定时从所述实例的状态文件中读取错误信息。所述方法进一步包括监控进程在需要对一个被监控进程的一个实例进行管理时,将管理指令写入该实例的状态文件中,该实例读取该指令,根据该指令执行相应操作。所述预先设定每个被监控进程的每个实例对应一个状态文件包括监控进程或预先设定的状态文件分配进程为每个被监控进程的每个实例分配一个状态文件;或者,预先设定状态文件分配规则,以便每个被监控进程的每个实例根据该规则确定本实例对应的状态文件。一种进程状态监控单元,包括状态文件信息获取模块获取并记录每个被监控进程的每个实例对应的状态文件信息,其中,所有状态文件互不重叠;监控模块根据状态文件信息获取模块记录的每个被监控进程的每个实例的状态文件信息,定时轮询各被监控进程的各实例的状态文件,若发现一个实例的状态文件被加互斥锁,则从该状态文件中读取该实例写入的状态信息。该单元进一步包括状态文件分配模块为每个被监控进程的每个实例分配一个状态文件,且所有状态文件互不重叠,并将为每个被监控进程的每个实例分配的状态文件信息发送给状态文件信息获取模块。所述监控模块进一步包括用于当发现一个被加互斥锁的状态文件中的状态信息在预设时长内未被更新时,执行实例异常操作的子模块。所述监控模块进一步包括用于当发现一个状态文件被加互斥锁后,定时从该状态文件中读取实例写入的资源占用信息或错误信息的子模块。该单元进一步包括管理模块当需要对一个被监控进程的一个实例进行管理时,将管理指令写入该实例的状态文件中。与现有技术相比,本专利技术中,每个被监控进程的每个实例对应一个状态文件,且所有状态文件互不重叠,当一个被监控进程的一个实例启动时,对其状态文件加互斥锁,并将从启动到停止过程中的各状态信息写入状态文件中,监控进程从该状态文件中读取该状态信息,使得被监控进程在自身状态发生改变时,可以实时将改变后的状态信息写入状态文件中,从而使得监控进程能够准确得知每个被监控进程的每个实例的各个状态,同时,本专利技术只使用文件即可,不依赖于API或Socket端口,对各种操作系统都适用,且很稳定。附图说明图1为本专利技术实施例提供的进程状态监控方法流程图;图2为本专利技术实施例提供的进程状态监控单元的组成图。具体实施例方式下面结合附图及具体实施例对本专利技术再作进一步详细的说明。图1为本专利技术实施例提供的进程状态监控方法流程图,如图1所示,其具体步骤如下步骤100 为每个被监控进程的每个实例分配一个状态文件,且所有状态文件互不重叠,监控进程记录各被监控进程ID+实例ID与状态文件ID的对应关系,被监控进程记录自身的各实例ID与状态文件ID的对应关系。这里,状态文件ID可以为文件的存储路径+文件名。可由监控进程或一个专门的状态文件分配进程来为每个被监控进程的每个实例分配状态文件,将为所有被监控进程的所有实例分配的状态文件信息如被监控进程ID+ 实例ID+状态文件ID存入监控进程和被监控进程都可访问的存储区域中。一个被监控进程的一个实例一开始启动,首先从该存储区域读取自身的状态文件信息如根据被监控进程ID+实例ID读取到状态文件ID ;而监控进程则可从该存储区域中读取到所有被监控进程的所有实例的状态文件信息。或者,也可预先确定一个状本文档来自技高网
...

【技术保护点】
1.一种进程状态监控方法,其特征在于,预先设定每个被监控进程的每个实例对应一个状态文件,且所有状态文件互不重叠,该方法包括:一个被监控进程的一个实例启动,该实例在自身的状态文件上加互斥锁,并将自身从启动到停止过程中的各个状态信息写入该状态文件中;监控进程从所述被监控进程的所述实例的状态文件中读取状态信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:李方宁
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86

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

1