服务器程序的监控方法及其系统技术方案

技术编号:9618229 阅读:118 留言:0更新日期:2014-01-30 06:00
本发明专利技术提供一种服务器程序的监控方法及其系统,所述方法包括:获取服务器程序在线运行时所调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间;在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。本发明专利技术的服务器程序的监控方法及其系统记录下服务器程序的所有输入,依据记录下来的数据,可以做到在离线状态下对服务器程序在线运行状态的完全还原。能够以回放时候的服务器作为基础,进行服务器程序性能的测试分析,服务器程序开发过程中偶现的BUG的重现,或者分析服务器的接入用户行为等等应用。

Method and system for monitoring server program

The present invention provides a method for monitoring the server program and a system thereof, the method includes: function calls to get online server when running the data returned, the return data input to the server, and store the returned data and the return data acquisition time; offline and according to the obtained time, corresponding the return data input to the server program. All input monitoring method of the invention is the server program and system record server program, based on the recorded data, can be done offline to online server program running state of complete reduction. Able to playback time server as a basis for analysis of server performance test, I now reproduce the BUG server program in the development process, analysis of user behavior or access server application etc..

【技术实现步骤摘要】
服务器程序的监控方法及其系统
本专利技术涉及服务器监控的
,特别是涉及一种服务器程序的监控方法,以及一种服务器程序的监控系统。
技术介绍
通常,服务器要处理接收到的数据请求,需要在服务器上运行各种服务器程序。而服务器的运行效率与各个服务器程序的运行情况密切相关,因此,在进行服务器性能分析等应用时,需要对服务器程序的在线运行情况进行监控。一般的服务器程序监控方式都需要记录服务器程序在线运行时的各种状态数据,包括输入、输出,执行等等。以图形化性能分析工具Vtune为例,其核心实现是基于CPU的性能采样,通过直接在运行的进程上采集性能数据样本来分析程序运行性能。然而,在进行服务器程序在线运行情况的监控时,对所述输入、输出,执行等状态数据的全面收集、保存和分析,将会大大影响服务器程序的正常运行,导致服务器程序在线运行时的处理效率损失。
技术实现思路
针对上述
技术介绍
中存在的问题,本专利技术的目的在于提供一种服务器程序的监控方法,能够减少服务器程序在线监控时,服务器程序处理效率损失。本专利技术的目的还在于提供一种服务器程序的监控系统,能够减少在服务器程序在线运行情况监控时,服务器程序的处理效率损失。一种服务器程序的监控方法,包括:获取服务器程序在线运行时调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间;在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。一种服务器程序的监控系统,包括:录制模块,用于获取服务器程序在线运行时调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间;回放模块,用于在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。与现有技术相比较,本专利技术服务器程序的监控方法及其系统,在服务器在线运行时,通过获取服务器程序所调用的函数的返回数据,记录下所述服务器程序的输入状态,并且将所述返回数据输入到所述服务器程序,因此保证所述服务器程序能够正常运行。又因为只记录所述服务器程序的输入状态,而不需要记录所有的输入、输出和处理等状态参数,所以对服务器程序在线运行的效率影响较少。而在离线状态下,将保存的所述返回数据再次输入到所述服务器程序,因为程序的动作是由其输入决定的,同样的程序响应相同的输入会作出相同的操作,获得相同的输出。而本专利技术中保存的所述返回数据即为所述服务器程序在线运行时的输入,在离线状态下将所述返回数据重新输入到所述服务器程序,所述服务器程序将会作出和在线运行时相同的响应。从而实现在离线状态下还原服务器程序的在线运行状态。通过对还原的在线运行状态的分析,可以得到服务器程序在线运行时的分析数据。能够以离线状态的服务器作为基础,进行服务器程序性能的测试分析,服务器程序开发过程中偶现的BUG的重现,或者分析服务器的接入用户行为等等应用。【附图说明】图1是本专利技术服务器程序的监控方法的流程示意图;图2是本专利技术服务器程序的监控方法的一个优选实施方式的流程示意图;图3是本专利技术服务器程序的监控方法的工作原理图;图4是本专利技术服务器程序的监控系统的结构示意图;图5是本专利技术服务器程序的监控系统的一个优选实施方式中录制模块的结构示意图;图6是本专利技术服务器程序的监控方法及其系统的一种软件的实现架构图。【具体实施方式】请参阅图1,图1是本专利技术服务器程序的监控方法的流程示意图。所述服务器程序的监控方法包括以下步骤:步骤S101,获取服务器程序在线运行时所调用的函数的返回数据;由于服务器程序的输入都是通过调用相应的函数获取的,因此,获取这些被调用函数的返回数据,也就获取了所述服务器程序的所有输入数据。所述服务器程序调用的函数包括系统API (Application ProgrammingInterface,应用程序编程接口)、自定义函数,以及共享内存的读取函数。所述系统API是指服务器系统中自带的一些预先定义的函数,比如Iinux系统下的时间获取API,包括time和gettimeofday等;又如文件读取API,包括fread和fgets等,系统API为最常用的函数,通常大部分服务器程序读取文件、获取时间、获取网络信息等的操作都是通过调用系统API来完成。这些系统API都具有固定的接口地址,通过这些接口地址可以调用对应的系统API。所述自定义函数是指服务器运行商或者服务器程序制作者自定义的一些可供服务器程序调用的函数,这些自定义函数通常用于执行一些系统API无法完成功能,例如信号量接收函数。这些自定义函数也具有指定的接口地址,通过这些指定的接口地址可以调用对应的自定义函数。所述共享内存的读取函数是指读取进程间的共享内存的函数。shared memory(共享内存)是进程间通信的一种技术,将一块内存映射到两个进程地址中,使得两个进程都可以对同一块内存进行读写,以Iinux为例子,通过shmget、shmat这两个函数,可以申请一块共享内存,然后服务器程序就可以像使用普通内存一样对这块共享内存进行读写操作,从而完成和其他进程的交互。而对这种共享内存的读取操作通常不是直接通过系统API完成的,而是由专门的共享内存的读取函数完成。这些共享内存的读取函数通常封装在一个函数集中,供服务器程序调用。通过hook技术监视所述服务器程序对上述这些函数的调用行为,以及对应的函数的返回结果,就可以获得所述返回数据,以及所述返回数据的返回时间。步骤S102,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间;获取所述返回数据之后,一方面要将所述返回数据输入到所述服务器程序,以保证服务器程序的正常运行,减少对服务器在线运行的效率的影响。另一方面,需要将所述返回数据以及所述返回数据的获取时间保存下来,以便在服务器程序离线时将所述返回数据回填到服务器程序。步骤S103,在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。由于服务器离线时的运行情况监控不会影响到服务器的在线运行效率,因此在服务器离线工作状态下,按照所述获取时间的顺序以及时间间隔,将相应的所述返回数据回填到所述服务器程序,就可以还原所述服务器程序的在线运行情况。本专利技术通过在服务器在线运行时,获取服务器程序调用的函数的返回数据,记录下所述服务器程序的输入状态,完成了服务器程序在线运行状态的“录制”。并且将所述返回数据输入到所述服务器程序,因此所述服务器程序能够正常运行。又因为只记录所述服务器程序的输入状态,而不需要记录所有的输入、输出和处理时间等状态参数,所以对服务器在线运行的效率影响较少。对于一个服务器程序来说,理论上并不存在真随机的算法,在此条件下,所有的算法的状态都是有限的,而对于固定的算法,只要给与固定的输入,其输出则相对也是固定的。因此,在离线状态下对所述服务器程序输入相同的返回数据,可以准确地还原所述服务器程序的在线运行状态。以C标准库的randO函数为例,通过记录下种子发生函数srandO函数,那么在固定的种子下,所有的randO产生的随机数其实都是一个固定值,依据这个原理,将其放大到进程的级别,从而可以实现进程所有行为的“录制”与“回放”。本专利技术在服务器离线本文档来自技高网...

【技术保护点】
一种服务器程序的监控方法,其特征在于,包括步骤:获取服务器程序在线运行时调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间;在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。

【技术特征摘要】
1.一种服务器程序的监控方法,其特征在于,包括步骤: 获取服务器程序在线运行时调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所述返回数据的获取时间; 在离线状态下,根据所述获取时间,将相应的所述返回数据输入到所述服务器程序。2.根据权利要求1所述的服务器程序的监控方法,其特征在于,获取服务器程序在线运行时调用的函数的返回数据的步骤包括: 利用hook函数监视所述服务器程序在线运行时的函数调用行为; 在发生函数调用行为时,调用预设的伪函数获取被调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并且保存所述返回数据。3.根据权利要求2所述的服务器程序的监控方法,其特征在于,将相应的所述返回数据输入到所述服务器程序的步骤包括: 在离线状态下调用所述伪函数将相应的所述返回数据输入到所述服务器程序。4.根据权利要求2或者3所述的服务器程序的监控方法,其特征在于,所述调用伪函数的步骤包括: 将所述服务器程序所调用的函数的地址替换为承载所述伪函数的动态链接库的地址。5.根据权利要求1任一项 所述的服务器程序的监控方法,其特征在于,所述服务器程序调用的函数包括系统AP1、自定义函数、以及共享内存的读取函数。6.根据权利要求1所述的服务器程序的监控方法,其特征在于,获取服务器程序在线运行时所调用的函数的返回数据的步骤包括: 当所述服务器程序调用时间获取API获取时间时,保存所述时间获取API的返回值; 当所述服务器程序调用文件读取API读取文件时,保存所述读取操作,并判断读取的文件是否已保存;如果未保存,则保存所述文件,并保存所述文件的修改时间;如果已保存,则判断本次文件读取操作对所述文件的修改时间是否晚于所述文件最近一次保存的修改时间;如果是,则更新已保存的所述文件,并保存所述文件更新后的修改时间;否则,不更新已保存的所述文件; 当所述服务器程序调用网络数据接收API接收数据时,保存所述接收数据的操作,并保存接收的数据; 当所述服务器程序中的信号量接收函数接收到信号量时,记录所述信号量的接收时间和所述信号量的值。7.根据权利要求6所述的服务器程序的监控方法,其特征在于,判断读取的文件是否已保存的步骤之前,执行以下步骤: 根据预设的白名单,判断读取的文件是否需要保存;其中,所述白名单中记录有需要保存的文件的扩展名,或者不需要保存的文件的扩展名。8.根据权利要求1所述的服务器程序的监控方法,其特征在于,保存所述返回数据以及所述返回数据的获取时间的步骤包括: 将所述返回数据以及所述返回数据的获取时间传输到所述服务器以外的储存设备上保存。9.根据权利要求1所述的服务器程序的监控方法,其特征在于,首先执行以下步骤: 在服务器程序启动时,判断所述服务器程序是否属于预设的监控列表中记载的程序;在判断结果为是时,执行获取服务器程序在线运行时所调用的函数的返回数据,将所述返回数据输入到所述服务器程序,并保存所述返回数据以及所...

【专利技术属性】
技术研发人员:侯健
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1