TProfiler--001

https://github.com/alibaba/TProfiler/wiki/TProfiler%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3

 

TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持.

TProfiler在JVM启动时把时间采集程序注入到字节码中,整个过程无需修改应用源码.运行时会把数据写到日志文件,一般情况下每小时输出的日志小于50M.

业界同类开源产品都不是针对大型Web应用设计的,对性能消耗较大不能长期使用,TProfiler解决了这个问题.目前TProfiler已应用于淘宝的核心Java前端系统.

部署后低峰期对应用响应时间影响20% 高峰期对吞吐量大约有30%的降低(高峰期可以远程关闭此工具)

 

先介绍几个系统性能的名词:

CPU: 不用说了吧

RT: 实时

QPS:QPS每秒查询率(Query Per Second)

LOAD:

 

 

TProfiler日志分析

 

tprofiler.log文件格式说明:

线程ID 线程栈深度 方法ID 方法执行时间

13 2 14558 6

13 2 14554 2

13 3 14576 2

13 4 14567 2

13 2 14554 4

13 2 14556 13

分析sampler log命令: java -cp tprofiler.jar com.taobao.profile.analysis.SamplerLogAnalysis d:/tsampler.log d:/method.log d:/thread.log,会生成method.log和thread.log

method.log文件格式说明:

方法信息 采样过程中方法出现次数

org.quartz.simpl.SimpleThreadPool.getNextRunnable(SimpleThreadPool.java:428) 19728

org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:518) 19728

org.quartz.simpl.SimpleThreadPool.access$000(SimpleThreadPool.java:47) 19728

org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51) 17558

thread.log文件格式说明:

线程信息 采样过程中线程出现次数

56 DefaultQuartzScheduler_Worker-3 TIMED_WAITING 661

55 DefaultQuartzScheduler_Worker-2 TIMED_WAITING 661

60 DefaultQuartzScheduler_Worker-7 TIMED_WAITING 661

分析profiler log命令: java -cp tprofiler.jar com.taobao.profile.analysis.ProfilerLogAnalysis d:/tprofiler.log d:/tmethod.log d:/topmethod.log d:/topobject.log,会生成topmethod.log和topobject.log

topmethod.log文件格式说明:

方法信息 执行次数 平均执行时间 全部执行时间

org/apache/velocity/runtime/parser/node/ASTBlock:render:74 38954 28 1101570

org/apache/velocity/runtime/parser/node/SimpleNode:render:338 39202 21 820064

topobject.log文件格式说明:

方法信息 执行次数 平均执行时间 全部执行时间

sketch/compile/parser/node/PropertyExecutor:<init>:32 573 1 636

sketch/util/introspection/UberspectImpl:<init>:282 34 7 241

 

你可能感兴趣的:(profile)