代码跟踪方法及其系统技术方案

技术编号:10075417 阅读:120 留言:0更新日期:2014-05-24 04:50
本发明专利技术公开一种代码跟踪方法及其系统,其中该方法包括:创建共享内存,所述共享内存中存储有多个子进程的状态信息;通过所述共享内存存储的子进程的状态信息判断子进程的当前状态持续时间是否超时;如果超时,则通过父进程跟踪超时的子进程并记录所述子进程的堆栈信息。通过本发明专利技术能够自动对线上服务代码的性能瓶颈进行跟踪。

【技术实现步骤摘要】

本专利技术涉及一种代码跟踪方法及其系统,尤其是一种针对线上服务代码的代码跟踪方法及其系统。
技术介绍
服务代码在测试阶段能发现大部分性能瓶颈,并针对性能瓶颈进行优化,但线上的环境是复杂多变的,代码上线之后有可能会出现各种问题。当出现服务质量下降,延迟升高时,就需要使用一定的方法对性能瓶颈进行定位,并进行优化。有鉴于此,当代码出现性能瓶颈时,一般会对性能瓶颈进行初步定位,记录关键点执行时间并记日志,然后对关键点执行时间进行分析,如果执行时间超过设定的值时就记为一个日志文件(Log),最后通过分析系统日志来定位性能瓶颈。参考图1,是现有技术中的一种性能瓶颈的跟踪方案的执行流程,包括:在关键点前纪录开始时间(Start),在关键点结束时纪录结束时间(End),将结束时间减去开始时间(End-Start)纪录到日志中,从而确定可优化点。然而,上述方式要求维护人员对代码结构有一定的了解,能够初步定位问题,设置关键点;并且,在关键点处需要记录执行时间,如果执行时间大于设置的时间还需要写日志,增加了代码的执行时间。综上所述,可知现有技术中存在的线上服务代码跟踪方案复杂,不能够智能实现性能瓶颈跟踪的技术问题。
技术实现思路
本专利技术的主要目的在于提供一种代码跟踪方法及其系统,以解决现有技术中存在的线上服务代码跟踪方案复杂,不能够智能实现性能瓶颈跟踪的技术问题。为解决上述问题,根据本专利技术的一个方面提供一种代码跟踪方法,其包括:创建共享内存,所述共享内存中存储有多个子进程的状态信息;通过所述共享内存存储的子进程的状态信息判断子进程的当前状态持续时间是否超时;如果超时,则通过父进程跟踪超时的子进程并记录所述子进程的堆栈信息。其中,所述方法还包括:在子进程处理请求的状态改变时,更新所述共享内存中存储的子进程的状态信息。其中,所述方法还包括:所述父进程定期获取所述共享内存存储的多个子进程的状态信息,并分别记录每个子进程当前状态的初始时间信息。其中,所述判断子进程的当前状态持续时间是否超时的步骤包括:设置时间阈值;根据初始时间信息及当前时间计算子进程的当前状态持续时间;判断当前状态持续时间是否超过所述时间阈值,若是则判定子进程的当前状态持续时间超时。其中,所述通过父进程记录超时的子进程的堆栈信息的步骤包括:通过父进程将超时的子进程的堆栈信息记录至系统日志文件中。根据本专利技术的另一个方面提供一种代码跟踪系统,其包括:创建模块,用于创建共享内存,所述共享内存中存储有多个子进程的状态信息;判断模块,用于通过所述共享内存存储的子进程的状态信息判断子进程的当前状态持续时间是否超时;跟踪处理模块,用于如果所述判断模块判断超时,则跟踪超时的子进程并记录所述子进程的堆栈信息。其中,所述系统还包括:更新模块,用于在子进程处理请求的状态改变时,更新所述共享内存中存储的子进程的状态信息。其中,所述系统还包括:获取模块,用于定期获取所述共享内存存储的多个子进程的状态信息;时间记录模块,用于分别记录每个子进程当前状态的初始时间信息。其中,所述判断模块包括:读取子模块,用于读取预设的时间阈值;计算子模块,用于根据初始时间信息及当前时间计算子进程的当前状态持续时间;判断子模块,用于判断当前状态持续时间是否超过所述时间阈值,若是则判定子进程的当前状态持续时间超时。其中,所述跟踪处理模块还用于,通过父进程将超时的子进程的堆栈信息记录至系统日志文件中。根据本专利技术的技术方案,通过创建共享内存,并通过获取所述共享内存存储的子进程的状态信息判断该子进程的当前状态持续时间是否超时,并跟踪超时的子进程。本专利技术能够自动对线上服务代码的性能瓶颈进行跟踪,从而对Master-worker模型服务代码的性能瓶颈进行优化处理。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1是现有技术中的一种性能瓶颈的跟踪方案的示意图;图2是根据本专利技术实施例的代码跟踪方法的流程图;图3是根据本专利技术实施例的进程关联共享内存的示意图;图4是根据本专利技术实施例的父进程执行代码跟踪方法的流程图;图5是根据本专利技术一个实施例的代码跟踪系统的结构框图;图6是根据本专利技术另一实施例的代码跟踪系统的结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本专利技术用于代码测试阶段,通过父进程和子进程关联共享内存,抽离跟踪代码,使用异步进程来完成程序性能瓶颈自动定位,对超时的子进程打印出当前的堆栈数据,有利于定位Master-worker(主-从)进程模型服务代码的性能瓶颈。为使本专利技术的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本专利技术作进一步地详细说明。参考图2,图2是根据本专利技术实施例的代码跟踪方法的流程图,所述方法至少包括(步骤S202-S206):步骤S202,创建共享内存,所述共享内存中存储有多个子进程的状态信息。在Master-worker进程模型中,Master进程主要负责管理全部的worker进程,worker进程在Master进程的管理下负责执行具体的工作。在本专利技术实施例中,父进程相当于Master进程,子进程相当于worker进程,而子进程在处理请求过程中所执行的程序称为代码,通过追踪代码能够定位系统的性能瓶颈。参考图3,图3是根据本专利技术实施例的进程关联共享内存的示意图。系统在初始化状态时创建一共享内存,父进程和多个子进程(子进程1、子进程2…子进程n)都关联该共享内存,父进程和子进程通过该共享内存共享数据。子进程拥有对于共享内存的写权限,多个子进程将其状态信息(例如状态值)写入到共享内存。在实际应用中,共享内存可以通过其内部的数组来本文档来自技高网...
代码跟踪方法及其系统

【技术保护点】

【技术特征摘要】
1.一种代码跟踪方法,用于代码测试阶段,所述方法包括:
创建共享内存,所述共享内存中存储有多个子进程的状态信息;
通过所述共享内存存储的子进程的状态信息判断子进程的当前状态持
续时间是否超时;
如果超时,则通过父进程跟踪超时的子进程并记录所述子进程的堆栈信
息。
2.根据权利要求1所述的方法,还包括:
在子进程处理请求的状态改变时,更新所述共享内存中存储的子进程的
状态信息。
3.根据权利要求1所述的方法,还包括:
所述父进程定期获取所述共享内存存储的多个子进程的状态信息,并分
别记录每个子进程当前状态的初始时间信息。
4.根据权利要求3所述的方法,其中,所述判断子进程的当前状态持
续时间是否超时的步骤包括:
设置时间阈值;
根据初始时间信息及当前时间计算子进程的当前状态持续时间;
判断当前状态持续时间是否超过所述时间阈值,若是则判定子进程的当
前状态持续时间超时。
5.根据权利要求1所述的方法,其中,所述通过父进程记录超时的子
进程的堆栈信息的步骤包括:
通过父进程将超时的子进程的堆栈信息记录至系统日志文件中。
6.一种代码跟踪系统,包括:

【专利技术属性】
技术研发人员:陈飞朱超王超
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:

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

1