美文网首页
利用JAVA探针分析复杂代码运维实践(转)

利用JAVA探针分析复杂代码运维实践(转)

作者: 西华子 | 来源:发表于2018-06-13 08:44 被阅读0次

1. 摘要:

你还在为系统慢、接口方法调用耗时高、代码量大无法找出原因头疼吗?你还在为系统输出日志不够详细无法分析耗时而头疼吗?那么,你会增加日志输出?全面阅读代码针对可疑点输出特定日志来跟踪?打开DEBUG日记模式海量分析日志?要求开发修改框架,针对每个方法都输出耗时?上述这些方法都可以用来分析方法耗时的原因,如果代码量很小都可以轻松找出慢的原因,但如果代码有几万或者更多的时候,这些方法都需要花费很多时间才有可能找出问题根源。

下面将介绍使用javaAgent和Java字节码注入技术开发java探针工具来分析复杂的接口方法,无需修改代码,简单部署就可以实时抓取代码的运行轨迹和方法耗时。

2. 基于javaAgent和Java字节码注入技术的java探针工具技术原理

image.png

图0-0:动态代理功能实现说明

我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下:

jdk1.5以后引入了javaAgent技术,javaAgent是运行方法之前的拦截器。我们利用javaAgent和ASM字节码技术,在JVM加载class二进制文件的时候,利用ASM动态的修改加载的class文件,在监控的方法前后添加计时器功能,用于计算监控方法耗时,同时将方法耗时及内部调用情况放入处理器,处理器利用栈先进后出的特点对方法调用先后顺序做处理,当一个请求处理结束后,将耗时方法轨迹和入参map输出到文件中,然后根据map中相应参数或耗时方法轨迹中的关键代码区分出我们要抓取的耗时业务。最后将相应耗时轨迹文件取下来,转化为xml格式并进行解析,通过浏览器将代码分层结构展示出来,方便耗时分析,如图0-1所示。

image.png

图0-1:java探针工具原理图

Java探针工具功能点:

1、支持方法执行耗时范围抓取设置,根据耗时范围抓取系统运行时出现在设置耗时范围的代码运行轨迹。

2、支持抓取特定的代码配置,方便对配置的特定方法进行抓取,过滤出关系的代码执行耗时情况。

3、支持APP层入口方法过滤,配置入口运行前的方法进行监控,相当于监控特有的方法耗时,进行方法专题分析。

4、支持入口方法参数输出功能,方便跟踪耗时高的时候对应的入参数。

5、提供WEB页面展示接口耗时展示、代码调用关系图展示、方法耗时百分比展示、可疑方法凸显功能。

其中抓取耗时的相关文件输出明细如图0-2所示。

image.png image.png

图0-2:耗时抓取明细说明

相关文章

  • 利用JAVA探针分析复杂代码运维实践(转)

    1. 摘要: 你还在为系统慢、接口方法调用耗时高、代码量大无法找出原因头疼吗?你还在为系统输出日志不够详细无法分析...

  • 第25章 动态规划建模

    1、传纸条 算法分析 利用 可优化到 时间复杂度 Java 代码 2、乌龟方案 算法分析 注意:题目说到是从第一个...

  • 智能运维案例

    智能运维案例如下: 博客1基于事件和知识图谱技术的智能运维实践方案,提出异常事件分析+推荐解决方案、事件影响度分析...

  • 赵成《进化》| 揭秘Netflix:顶级公司Netflix运维的

    关于顶级公司Netflix 的运维揭秘,赵成老师在新书《进化:运维技术变革与实践探索》中有比较详细的分析。 众所周...

  • -javaagent

    Java探针-Java Agent技术 在利用JetbrainsCrack对IDEA进行破解的时候有用到如下-ja...

  • 数据结构学习笔记丨复杂度分析 - Day 1

    复杂度分析的意义:在写代码时更快速的理解和估算当前代码的时间复杂度与空间复杂度,根据这两个分析能对自己这段代码的运...

  • 第14章 深度优先搜索

    1、中国象棋 算法分析 bfs 时间复杂度 Java代码 2、踏青 算法分析 flood fill 算法 时间复杂...

  • CTF初识

    ctf分类 安全加固,系统运维,漏洞修补 网络流量,日志分析, 漏洞利用,补丁开发,组织攻防 漏洞利用,攻防实施 ...

  • 第2章 字符串和日期

    1、字符串中A的数量 算法分析 直接模拟 时间复杂度 Java 代码 2、最长的名字 算法分析 直接模拟 时间复杂...

  • 分享 Linux运维最佳实践 - 胥峰 & 杨俊俊 ep

    Linux运维最佳实践-胥峰&杨俊俊epubpdf格式下载地址: Linux运维最佳实践 - 胥峰 & 杨俊俊 e...

网友评论

      本文标题:利用JAVA探针分析复杂代码运维实践(转)

      本文链接:https://www.haomeiwen.com/subject/jtideftx.html