继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

系统优化怎么做-JVM优化之TProfiler

程序员昌老师
关注TA
已关注
手记 9
粉丝 4952
获赞 87

前言

在上一期主要讲到VisualJVM的使用。这一节章节去讲述Tprofiler的基本使用。

总体介绍

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

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

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

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

具体配置

  • 下载下发Tprofie

alibaba/TProfiler图标

  • 将dist下的TProfiler_1.0.1.zip再解压

  • Tprofile配置文件

profile.prperties
#log file namelogFileName = tprofiler.log    // 日志文件名methodFileName = tmethod.log  // 调用方法文件名samplerFileName = tsampler.log  // 取样器文件名#basic configuration itemsstartProfTime = 9:00:00  // 开始监控时间endProfTime = 11:00:00  // 结束监控时间eachProfUseTime = 5    // profile时间长度(单位秒)eachProfIntervalTime = 50 // 两次profile的时间间隔(单位秒)samplerIntervalTime = 20 // 两次采样的时间间隔(单位秒)port = 50000  // 对外提供服务支持查询的端口号debugMode = false // 是否进入调试模式needNanoTime = false //是否需要用纳秒记录时间ignoreGetSetMethod = true //是否忽略采集get/set方法#file paths 日志的存放路径、名称可以自行设置logFilePath = ${user.home}/logs/${logFileName} //profile 日志文件存放位置methodFilePath = ${user.home}/logs/${methodFileName} // 调用方法日志文件存放位置samplerFilePath = ${user.home}/logs/${samplerFileName} // 取样器文件存放位置#include & excludes items 需要、不需要profile的包路径excludeClassLoader = org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader //不注入的类加载器(分号分割),使用默认即可includePackageStartsWith = com.xxx;com.xxx.common //(进行profile的类包名(分号分割)这里按需求将项目中需要profile的包名入进来即可)excludePackageStartsWith = com.taobao.sketch;org.apache.velocity;com.alibaba;com.taobao.forest.domain.dataobject //不进行profile的类包名(分号分割),使用默认即可
关键配置项
excludeClassLoader
includePackageStartsWith
excludePackageStartsWith
  • 上传服务器

  • 解压缩压缩包

unzip TProfiler_1.0.1.zip
  • 修改Tomcat配置及设置jvm参数

 CATALINA_OPTS="$CATALINA_OPTS -javaagent:/javaee/tomcat/tprofiler/lib/tprofiler-1.0.1.jar -Dprofile.properties=/javaee/tomcat/tprofiler/profile.propertie"

Tprofile远程操作

  • 查看tprofile状态

$ java -cp /opt/tprofiler/tprofiler-1.0.1.jar com.taobao.profile.client.TProfilerClient ip.xx.yy.zz 30000 status

停止Tprofiler

$ java -cp /opt/tprofiler/tprofiler-1.0.1.jar com.taobao.profile.client.TProfilerClient ip.xx.yy.zz 30000 stop

启动Tprofiler

$ java -cp /opt/tprofiler/tprofiler-1.0.1.jar com.taobao.profile.client.TProfilerClient ip.xx.yy.zz 30000 start

输出采集日志

$ java -cp /opt/tprofiler/tprofiler-1.0.1.jar com.taobao.profile.client.TProfilerClient  ip.xx.yy.zz 30000 flushmethod

TopMethod统计

$ java -cp /opt/tprofiler/tprofiler-1.0.1.jar com.taobao.profile.analysis.ProfilerLogAnalysis ~/logs/tprofiler.log ~/logs/tmethod.log ~/logs/topmethod.log ~/logs/topobject.log

根据topmethod.log统计结果,可以拿到热点方法。方法的调用次数,平均执行时间,采样时间内的总时间,根据这些慢方法进行分析代码进行优化。

导致慢方法的几个原因

  1. 大规模的嵌套循环

  2. SQL慢查询

  3. 某些API的执行效率

优化方向

  1. 静态数据使用缓存

  2. 优化SQL

  3. 使用效率高的公共API


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP