instrument

使用TProfiler分析并调优项目中的Fastjson序列化代码

北城以北 提交于 2019-11-29 01:25:20
新项目年后就上线了,现在业务上没什么问题,就用 TProfiler 做了下性能分析,果然有坑。 ##一、TProfiler入门 高手请自觉略过本节。 ###1.简介 TProfiler是阿里巴巴开源的一款性能分析工具。号称可以用于生产环境进行长期的性能分析。测试程序部署后,在低峰期对响应时间影响20%,在高峰期对QPS影响30%。详细介绍请见 官方WIKI 。 ###2.简要的实现原理 TProfiler的实现基于JAVA的 Instrumentation 和ASM。 Instrumentation可以理解为一种虚拟机级别的AOP实现 ,无需对项目代码和JDK有任何改动就可以实现AOP功能。TProfiler利用Instrumentation提供的入口,调用ASM将待分析的类的字节码进行修改,加入分析记录方法。在Profiler运行时即可抽样收集到相关类方法的调用信息。使用Instrumentation时也可以通过JVMTI提供的接口实现对类的完全控制。至于 为什么TProfiler会选择ASM ,我想可能有两方面的考虑: 1)性能上更高效。使用JVMTI在每个类装入时都要执行hook程序,而ASM没有明显的性能代价。 2)使用JVMTI对编程难度要求较高,要求对class文件结构和java字节码有深刻了解,而ASM虽然也有一些难度,但是相对来说还是小一些。 ###3.配置