为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java JVM

前言

在上一期主要讲到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


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
4952
获赞与收藏
87

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消