[发明专利]一种基于窗口平台的应用程序监控方法无效
申请号: | 200810057072.4 | 申请日: | 2008-01-29 |
公开(公告)号: | CN101227630A | 公开(公告)日: | 2008-07-23 |
发明(设计)人: | 刘少情 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | H04Q3/00 | 分类号: | H04Q3/00;H04L12/24;H04M3/22 |
代理公司: | 北京汇泽知识产权代理有限公司 | 代理人: | 张颖玲;王黎延 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 窗口 平台 应用程序 监控 方法 | ||
技术领域
本发明涉及应用程序监控技术,具体涉及一种基于窗口平台的应用程序监控方法。
背景技术
在电信网络中,除了用于完成用户接入和呼叫流程处理的嵌入式系统外,网管服务、计费服务、统计服务、智能呼叫等服务功能也是在后台服务器上实现的,而由于窗口(Windows)平台具有通用性、易操作性等特点,所以,现有电信网络中很多后台服务器都是基于Windows平台的。
为了使一个后台服务器可以提供多种服务功能,通常的做法是将每种服务功能做成一个独立的应用程序,例如完成计费功能的计费服务器程序、完成统计功能的统计服务器程序等。多个独立的程序在同一个后台服务器上运行时,如果出现某个或某些程序异常或长时间不响应的情况,就需要及时重启所述程序甚至重启服务器,否则将会导致业务错误,甚至业务中断。因此,必须采用有效的监控方法,实时监控这些运行在同一个后台服务器上的多个应用程序的运行状况,以便在应用程序异常或长时间不响应的情况下,及时重启程序或服务器以保证业务正常。
Windows操作系统本身提供了一些针对Windows平台上应用程序的监控方法,例如,将应用程序做成服务程序,在服务配置时,通过服务控制器设置在服务失败时重启服务程序或重启服务器。但是,由于服务控制器无法对服务程序长时间不响应的情况及时作出判断,不能很好地满足在重启一个程序的同时,重启其他几个相关程序的要求,所以,这种方法实时性差,且容易引起后台服务器功能错误。
还有一种应用程序监控方法,通过编写监控程序,由监控程序对相关应用程序的运行状态进行监控。监控程序对应用程序的监控是通过定时与被监控程序握手实现的,如果监控程序检测到某个被监控应用程序的握手信号在一段时间内丢失,则认为该应用程序长时间未响应或者出现异常,从而可以重启应用程序或服务器以保证业务正常。握手的方法一般采用发送消息或写共享内存的方式,但这两种方式均需要在被监控应用程序中增加相应的代码,以响应握手消息或写共享内存。所以,这种方法占用系统资源,且可扩展性差。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于窗口平台的应用程序监控方法,能够实现准确的实时监控、并且可扩张性好。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于窗口平台的应用程序监控方法,该方法包括:
a、监控程序启动后,根据配置文件中被监控应用程序的配置信息分别创建被监控应用程序进程;
b、所述被监控应用程序进程创建成功后,监控程序将注入动态链接库DLL的代码注入所述创建成功的进程;
c、注入DLL修改所述创建成功进程中的消息分发函数代码;
d、监控程序定时向所有的被监控应用程序发送握手消息,被监控应用程序收到消息后,调用步骤c所述修改后的消息分发函数,所述修改后的消息分发函数确定收到消息为监控程序发送的握手消息时,向监控程序返回应答消息。
所述配置文件中的应用程序配置信息至少包括:应用程序的路径、应用程序最大应答超时次数和发送握手消息频率。
步骤b所述将注入DLL的代码注入进程为:在进程中创建一个入口函数为DLL加载函数、参数为注入DLL名称的线程并执行。
所述DLL修改系统消息分发函数代码包括:
c1、设置与消息分发函数参数类型和返回类型相同的函数指针x,为所设置的指针申请内存;
c2、设置函数y,所设置函数的参数类型和返回类型与消息分发函数相同;
c3、将消息分发函数代码的前五个字节拷贝到指针x所指向内存的前五个字节,并修改消息分发函数代码的第一个字节为跳转JMP指令,后四个字节为跳转到函数y的字节数;
c4、将指针x所指向内存的第六个字节修改为JMP指令,其后四个字节为跳转到消息分发函数第六个字节的字节数。
步骤c2所述函数y,用于判断被监控应用程序进程收到的消息是否为监控程序发送的握手消息,如果是,则向监控程序返回应答信息后调用指针x;否则直接调用指针x。
设置应答时间阈值,如果监控程序发出握手消息后在应答时间阈值内未收到应答消息,则应答超时;当所述被监控应用程序应答超时次数大于应用程序最大应答超时次数时,监控程序重启所述被监控应用程序进程及其相关应用程序进程。
所述重启被监控应用程序之前,该方法进一步包括:监控程序结束所述被监控应用程序进程。
设置超时次数阈值,该方法进一步包括:所有被监控应用程序重启次数超过设定的超时次数阈值时,重启服务器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810057072.4/2.html,转载请声明来源钻瓜专利网。