[发明专利]获取程序性能消耗信息的方法、装置及系统有效
申请号: | 201310325258.4 | 申请日: | 2013-07-30 |
公开(公告)号: | CN104346148B | 公开(公告)日: | 2017-10-20 |
发明(设计)人: | 汤鑫斌 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京润泽恒知识产权代理有限公司11319 | 代理人: | 苏培华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 获取 程序 性能 消耗 信息 方法 装置 系统 | ||
技术领域
本申请涉及Java程序性能排查与分析技术领域,特别是涉及获取程序性能消耗信息的方法、装置及系统。
背景技术
在Java程序的性能问题排查和分析工作中,经常需要获取Java程序的执行路径以及路径上各节点性能消耗情况,也即需要获知Java程序中各个Java方法的执行时间,各个Java方法之间的调用关系,以及Java方法调用的其他方法的执行时间。为了达到该目的,一般的实现方式是在Java方法调用开头和结束处分别增加一段用于记录当前时间和方法标识的代码,并把该数据设置到线程变量中;这样,当最上层被调用的方法的结束处被调用时,刚好在线程变量中成对地产生了包含方法标识信息、方法调用开始时间、方法调用结束时间的信息,这就可以计算出每个方法执行的耗时时间。计算公式是:方法调用消耗时间=方法调用结束时间-方法调用开始时间。同时,由于方法调用的开始和结束都是成对出现的,通过所有方法调用的开始和结束时间的先后顺序,就可以得到方法之间的调用关系树。
现有技术中,为了向Java方法调用开头和结束处增加相关的代码,一种实现方式是由技术人员手工设置。也就是说,当java程序的问题排查人员想要知道某个Java方法消耗的执行时间以及方法内调用的其他方法的执行时间等信息时,可以手动地在各个需要关注的Java方法调用开头和结束处增加相关的代码。这样,当Java程序运行后,就可以得到这些Java方法消耗的执行时间。
但是,这种实现方式下需要技术人员手动地修改程序代码,而且修改之后需要重新部署应用来让这些代码生效。如果要新增一些关注点,则需要重新在这些关注点的调用开头及结束处添加代码并重新部署。所以,这种方式存在硬编码、代价大、需要了解应用程序的代码逻辑等缺点。
为此,现有技术中还提供了另一种实现方式,在这种实现方式中,将前述方式中在Java方法开头和结尾处手工增加相关代码的操作,修改为通过运行时动态操纵Java方法所在类的字节码的方式来实现,也就是说,可以通过字节码操纵框架(如ASM)实现自动增加代码的目的。具体实现时,需要在JVM(Java Virtual Machine,Java虚拟机)启动参数中以javaagent参数指定用于拦截类加载和修改类字节码的jar包,JVM启动后,javaagent参数指定的jar包拦截所有加载的Java类,并在各方法中增加获取方法执行时间的字节码。
相对而言,这种方式省去了手工添加排查代码的麻烦,但是仍然至少存在以下问题:这种方式对所有加载进JVM的Java方法都做了字节码修改,这在一定程度上会影响到被检查应用的代码执行效率。
发明内容
本申请提供了获取程序性能消耗信息的方法、装置及系统,能够避免用户手动插入代码的操作过程,而且还可以控制进行字节码增强的范围,降低对实际的业务程序运行造成的影响。
本申请提供了如下方案:
一种获取程序性能消耗信息的方法,包括:
接收携带有待分析目标信息的分析指令,所述待分析目标信息包括待分析进程、待分析方法以及所述待分析方法所属的类的信息;
根据所述待分析目标信息,确定待分析方法;
在所述待分析进程已加载的类中查找待分析方法的字节码,通过字节码操纵框架对所述待分析方法进行字节码增强,以便在待分析方法开始被调用时记录方法开始时间,将方法开始时间及方法标识信息保存到指定位置,在待分析方法返回时记录方法返回时间,将方法返回时间及方法标识信息保存到所述指定位置;
根据所述指定位置记录的信息,计算每次调用过程中涉及的各个待分析方法的性能消耗分析结果。
一种获取程序性能消耗信息的方法,包括:
接收用户提交的待分析目标信息;所述待分析目标信息包括待分析进程、待分析方法以及所述待分析方法所属的类的信息;
向指定端口发送携带有所述待分析目标信息的分析指令;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310325258.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于情景的业务驱动模型构建方法
- 下一篇:一种跨平台转换应用代码的方法及装置