下载tporfiler
https://codeload.github.com/alibaba/TProfiler/zip/master
下载完成,TProfiler-master.zip 。有dist目录,解压TProfiler_1.0.1.zip为/home/ic/tprofile目录。移动lib下tprofiler_1.0.1.jar到/home/ic/tprofile目录。
编辑/home/ic/tprofiler/profile.properties文件,
1.修改参数
startProfTime = 8:30:00 开始profile的时间点
endProfTime = 17:30:00 结束profile的时间点
2.日志默认配置
用户目录下logs目录,即/home/ic/logs
[plain] view plain copy
[ic@linux-5f173 logs]
pwd/home/ic/logs[ic@linux−5f173logs]
ll
total 11184
-rw-rw-r– 1 ic ic 2032 Jul 22 13:14 method.log
-rw-rw-r– 1 ic ic 5863 Jul 22 13:14 thread.log
-rw-rw-r– 1 ic ic 5485 Jul 22 13:34 tmethod.log
-rw-rw-r– 1 ic ic 55 Jul 22 13:30 topmethod.log
-rw-rw-r– 1 ic ic 0 Jul 22 13:30 topobject.log
-rw-rw-r– 1 ic ic 15274 Jul 22 13:39 tprofiler.log
-rw-rw-r– 1 ic ic 11393647 Jul 22 13:40 tsampler.log
jvm虚拟器启动参数增加如下参数,并启动Java应用
-javaagent:/home/ic/tprofiler/tprofiler.jar -Dprofile.properties=/home/ic/tprofiler/profile.properties
等几分钟后,会在logs目录下,生成tprofiler.log 与 tsampler.log文件。这两个文件是原始文件,需要使用ProfilerLogAnalysis类与SamplerLogAnalysis 类分别进行日志分析
如果是tomcat,修改catalina.sh增加
JAVA_OPTS=” -javaagent:/home/ic/tprofiler/tprofiler.jar -Dprofile.properties=/home/ic/tprofiler/profile.properties”
分析tsampler.log采样文件,输出method.log与thread.log两文件
java -cp tprofiler.jar com.taobao.profile.analysis.SamplerLogAnalysis /home/ic/logs/tsampler.log /home/ic/logs/method.log /home/ic/logs/thread.log
method.log文件格式说明:
方法信息 采样过程中方法出现次数
org.quartz.simpl.SimpleThreadPool.getNextRunnable(SimpleThreadPool.java:428) 19728
org.quartz.simpl.SimpleThreadPool
WorkerThread.run(SimpleThreadPool.java:518)19728org.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
分析tprofiler.log采样文件,输出topmethod.log与topobject.log两文件,需要tmethod.log文件为输入
1.首先生成tmethod.log文件(必需等到profile.properties文件中endProfTime属性定义的时间点结束后,才能生成,因此需人工提前生成),由此命令
java -cp tprofiler.jar com.taobao.profile.client.TProfilerClient 127.0.0.1 50000 flushmethod
2.生成topmethod.log与topobject.log两文件,
java -cp tprofiler.jar com.taobao.profile.analysis.ProfilerLogAnalysis /home/ic/logs/tprofiler.log /home/ic/logs/tmethod.log /home/ic/logs/topmethod.log /home/ic/logs/topobject.log
topmethod.log文件查看
[ic@Linux-5f173 logs]$ more topmethod.log
[plain] view plain copy
方法信息 执行次数 平均执行时间 全部执行时间
[plain] view plain copy
com/tcs/server/mpush/connect/MessageReceivedHandler:received:13613022 2472
com/tcs/server/mpush/connect/Login:validateToken:56682 138
com/tcs/server/mpush/connect/Login:sendOfflineMessage:112102 20
com/tcs/server/mpush/push/TpsReportTask:run:133 2 4 7
topobject.log文件查看
方法信息 执行次数 平均执行时间 全部执行时间
sketch/compile/parser/node/PropertyExecutor::32 573 1 636
sketch/util/introspection/UberspectImpl::282 34 7 241
实验时,文件没有写入内容。分析代码是方法名必需包括,才会写入。
tprofiler.log文件格式说明
[plain] view plain copy
线程ID 线程栈深度 方法ID 方法执行时间
13 2 14558 6
启动与停止tprofiler功能
[plain] view plain copy
java -cp tprofiler.jar com.taobao.profile.client.TProfilerClient 127.0.0.1 50000 stauts
java -cp tprofiler.jar com.taobao.profile.client.TProfilerClient 127.0.0.1 50000 stop
java -cp tprofiler.jar com.taobao.profile.client.TProfilerClient 127.0.0.1 50000 start