代码故障定位方法、装置、设备及存储介质制造方法及图纸

技术编号:24799165 阅读:33 留言:0更新日期:2020-07-07 20:59
本发明专利技术实施例提供一种代码故障定位方法、装置、设备及存储介质。该方法包括:基于预设周期,定时扫描所有线程业务执行耗时;当所有线程业务执行耗时中存在任一线程业务执行耗时大于预设阈值时,则采集执行耗时大于预设阈值的线程业务调用堆栈信息;将执行耗时大于预设阈值的线程业务调用堆栈信息与业务跟踪信息进行绑定,得到跟踪业务采集到的信息;按照业务应用调用顺序,将跟踪业务采集到的信息组织为业务调用链;根据业务调用链,进行代码故障定位。利用上述方案快速地发现性能问题代码,以方便对代码进行调优。

【技术实现步骤摘要】
代码故障定位方法、装置、设备及存储介质
本专利技术涉及通信
,尤其涉及一种代码故障定位方法、装置、设备及存储介质。
技术介绍
中国移动的第三代业务支撑系统已经完成了系统解耦、分布式改造等互联网架构建设,新的系统架构对应用处理能力、动态能力扩充等都带来了很大提升,但是同时也给系统运维带来了全新的挑战:(1)技术架构的转变、开源软件的引入、中心化改造,使第三代业务支撑系统架构复杂化,业务主机X86化及虚拟化技术的应用,使得主机的设备数量成倍数增加,系统规模庞大,使得当出现系统性能问题时,问题根源定位变得非常困难。(2)新应用架构下,在日常的运维中发现当前的应用版本对主机资源需求较高、资源消耗较多,但相应的,应用性能并没有得到明显提升,用户感知反而出现下降的情况。对于如何快速定位应用中可能的性能瓶颈,在现有的运维监控手段下,没有很好的解决办法。为保障业务支撑系统稳定运行,当发生故障前,可以提前对可能引起故障的性能指标进行监控,设定阀值并预警,达到相应阀值即告警通知相关人员进行处理。当发生故障时,可以快速通知相关人员,并帮助快速定位系统问题,找到系统瓶颈所在,快速准确定位性能问题根源、对系统进行持续性能优化与统一监控,以达到帮助业务系统快速恢复,快速提升应用响应速度,快速处理故障问题。然而,目前IT系统运维工作中,主要存在以下缺点和问题:第一,多数工作任务为手工或脚本执行,可视化操作欠缺,且脚本方法较为分散不利于管理,脚本运行没有把过程或场景进行固化,不能跟踪、追溯问题。第二,主机、数据库、基础软件等巡检任务需人工执行生成附件发送日报邮件,效率有待提升。第三,应用故障之前的性能瓶颈没有进行预警,没有良好的性能监控方法,或者采集到的一些指标没有可视化、图形化的展现。第四,对设备、业务集群、应用部署、资源使用情况等没有统一的、集中的基础数据库进行管理。也没有整体架构的拓扑展现。第五,调整变更时需投入较大的人力和精力。综上所述,虽然在日常运维工作中,已逐步开展一些运维自动化或半自动化工作,并取得一定的效率提升,但是众多分散的工具以及自动化脚本,随着运维场景的增多会让我们的管理过程比较困难,同时也对我们的人员稳定性和人员个人意识存在较大的依赖性。
技术实现思路
本专利技术实施例提供了一种代码故障定位方法、装置、设备及存储介质,可以摆脱对人员稳定性和人员个人意识的依赖,自动定位到源代码中,快速地发现性能问题代码,以方便对代码进行调优,找到应用性能问题的解决方法。第一方面,本专利技术实施例提供了一种代码故障定位方法,方法包括:基于预设周期,定时扫描所有线程业务执行耗时;当所述所有线程业务执行耗时中存在任一线程业务执行耗时大于预设阈值时,则采集执行耗时大于预设阈值的线程业务调用堆栈信息;将所述执行耗时大于预设阈值的线程业务调用堆栈信息与业务跟踪信息进行绑定,得到跟踪业务采集到的信息;按照业务应用调用顺序,将所述跟踪业务采集到的信息组织为业务调用链;根据所述业务调用链,进行代码故障定位。根据本专利技术所述的代码故障定位方法,所述方法还包括:当应用启动时,对多个关键信息类进行字节码注入,得到所述业务跟踪信息,其中,所述业务跟踪信息包括业务逻辑和监控代码;对所述多个关键信息类进行业务耗时计时。根据本专利技术所述的代码故障定位方法,所述多个关键信息类包括:Java服务器页面Jsp、服务连接器Servlet、企业级的JavaBeanEJB、Java命名和目录接口JNDI、Java数据库连接JDBC。根据本专利技术所述的代码故障定位方法,所述对所述多个关键信息类进行业务耗时计时,包括:当发出业务请求后,对所述Jsp或Servlet进行业务耗时计时;当业务调用所述EJB、JNDI或JDBC时,对所述EJB、JNDI或JDBC进行业务耗时计时;其中,所述线程用于执行所述业务请求。根据本专利技术所述的代码故障定位方法,所述根据所述业务调用链,进行代码故障定位,包括:基于预设阈值,判断业务请求是否超时;当判定所述业务请求超时,则保存业务请求超时的业务调用链;根据所述业务请求超时的业务调用链,进行代码故障定位。根据本专利技术所述的代码故障定位方法,所述根据所述业务请求超时的业务调用链,进行代码故障定位,包括:通过请求调用栈信息,查看所述业务请求超时的业务调用链;通过请求统一资源定位符URL,查看所述业务请求超时的业务调用链信息中的线程堆栈完整调用信息;根据所述线程堆栈完整调用信息,进行代码故障定位。根据本专利技术所述的代码故障定位方法,所述方法还包括:判断资源是否关闭;当判定资源未关闭时,则抓取堆栈信息;根据所述堆栈信息,进行代码故障定位。根据本专利技术所述的代码故障定位方法,所述判断资源是否关闭,包括:对所述创建资源方法返回的资源进行包装,并将包装好的资源放入引用队列中;当对资源对象进行垃圾回收时,所述引用队列获取包装;根据所述包装,判断是否调用了资源的关闭方法,得到判定结果;根据所述判定结果,判断资源是否关闭。根据本专利技术所述的代码故障定位方法,所述方法还包括:判断应用是否发生异常;当判定应用发生异常时,则抓取堆栈信息;根据所述堆栈信息,进行代码故障定位。根据本专利技术所述的代码故障定位方法,所述根据所述堆栈信息,进行代码故障定位,包括:当业务代码发生异常时,则抓取异常调用堆栈信息;在所述异常调用堆栈信息中找到与业务相关的调用类;根据所述调用类,判定所述业务代码发生异常的具体代码的行号信息。第二方面,本专利技术实施例提供了一种代码故障定位装置,装置包括:扫描模块,用于基于预设周期,定时扫描所有线程业务执行耗时;采集模块,用于当所述所有线程业务执行耗时中存在任一线程业务执行耗时大于预设阈值时,则采集执行耗时大于预设阈值的线程业务调用堆栈信息;绑定模块,用于将所述执行耗时大于预设阈值的线程业务调用堆栈信息与业务跟踪信息进行绑定,得到跟踪业务采集到的信息;组织模块,用于按照业务应用调用顺序,将所述跟踪业务采集到的信息组织为业务调用链;定位模块,用于根据所述业务调用链,进行代码故障定位。根据本专利技术所述的代码故障定位装置,还包括:注入模块,用于当应用启动时,对多个关键信息类进行字节码注入,得到所述业务跟踪信息,其中,所述业务跟踪信息包括业务逻辑和监控代码;计时模块,用于对所述多个关键信息类进行业务耗时计时。根据本专利技术所述的代码故障定位装置,所述多个关键信息类包括:Java服务器页面Jsp、服务连接器Servlet、企业级的JavaBeanEJB、Java命名和目录接口JNDI、Java数据库连接JDBC。根据本专利技术所述的代码故障定位装本文档来自技高网
...

【技术保护点】
1.一种代码故障定位方法,包括:/n基于预设周期,定时扫描所有线程业务执行耗时;/n当所述所有线程业务执行耗时中存在任一线程业务执行耗时大于预设阈值时,则采集执行耗时大于预设阈值的线程业务调用堆栈信息;/n将所述执行耗时大于预设阈值的线程业务调用堆栈信息与业务跟踪信息进行绑定,得到跟踪业务采集到的信息;/n按照业务应用调用顺序,将所述跟踪业务采集到的信息组织为业务调用链;/n根据所述业务调用链,进行代码故障定位。/n

【技术特征摘要】
1.一种代码故障定位方法,包括:
基于预设周期,定时扫描所有线程业务执行耗时;
当所述所有线程业务执行耗时中存在任一线程业务执行耗时大于预设阈值时,则采集执行耗时大于预设阈值的线程业务调用堆栈信息;
将所述执行耗时大于预设阈值的线程业务调用堆栈信息与业务跟踪信息进行绑定,得到跟踪业务采集到的信息;
按照业务应用调用顺序,将所述跟踪业务采集到的信息组织为业务调用链;
根据所述业务调用链,进行代码故障定位。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当应用启动时,对多个关键信息类进行字节码注入,得到所述业务跟踪信息,其中,所述业务跟踪信息包括业务逻辑和监控代码;
对所述多个关键信息类进行业务耗时计时。


3.根据权利要求2所述的方法,其特征在于,所述多个关键信息类包括:
Java服务器页面Jsp、服务连接器Servlet、企业级的JavaBeanEJB、Java命名和目录接口JNDI、Java数据库连接JDBC。


4.根据权利要求3所述的方法,其特征在于,所述对所述多个关键信息类进行业务耗时计时,包括:
当发出业务请求后,对所述Jsp或Servlet进行业务耗时计时;
当业务调用所述EJB、JNDI或JDBC时,对所述EJB、JNDI或JDBC进行业务耗时计时;
其中,所述线程用于执行所述业务请求。


5.根据权利要求1所述的方法,其特征在于,所述根据所述业务调用链,进行代码故障定位,包括:
基于预设阈值,判断业务请求是否超时;
当判定所述业务请求超时,则保存业务请求超时的业务调用链;
根据所述业务请求超时的业务调用链,进行代码故障定位。


6.根据权利要求5所述的方法,其特征在于,所述根据所述业务请求超时的业务调用链,进行代码故障定位,包括:
通过请求调用栈信息,查看所述业务请求超时的业务调用链;
通过请求统一资源定位符URL,查看所述业务请求超时的业务调用链信息中的线程堆栈完整调用信息;
根据所述线程堆栈完整调用信息,进行代码故障定位。


7.根据权利要求1...

【专利技术属性】
技术研发人员:董宇
申请(专利权)人:中国移动通信集团贵州有限公司中国移动通信集团有限公司
类型:发明
国别省市:贵州;52

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

1