【Java】java | arthas 使用 | arthas分析接口性能

一、概述

        1、有个查询接口,响应9s,需要排查下什么问题

        2、常规操作是在关键节点的前后获取System.currentTimeMillis(),然后相减

        3、其实阿里好用的工具arthas,学用分析

二、安装arthas

1、指导文档

https://arthas.aliyun.com/doc/

2、直接下载

https://arthas.aliyun.com/arthas-boot.jar

3、jdk依赖

        1)说是1.7+,现在直接用1.8吧

        2)jdk11及以上,没有试,自行尝试

~~

 三、运行与使用说明

1、使用说明

        1)arthas提供两种方式,一种是按需运行、实时排查;一种是agent代理运行应用jar包

        2)agent代理方式,本文不描述;实际场景,用实时排查就行,毕竟不是一直有问题

2、运行arthas

java -jar arthas-boot.jar

【Java】java | arthas 使用 | arthas分析接口性能_第1张图片

        1)运行时候,第一次会下载依赖,默认走的是阿里的源,一般没问题

        2)运行成功,选择准备分析的项目,就进入到控制台了

~~

 四、常用指令

1、命令使用说明

1)文档地址

https://arthas.aliyun.com/doc/commands.html

2)退出的话用指令quit即可

quit

~~

2、dashboard

1)命令

dashboard

【Java】java | arthas 使用 | arthas分析接口性能_第2张图片

2)进入控制台,直接输入即可

3)这个只是了解当前JVM的配置

4)框出来的是什么意思,自行学习吧

~~

3、接口耗时定位

1)首先启动arthas并进入相应项目

2)确定接口所在类-方法,类需要全路径

3)执行命令

trace com.包路径.TestController list

4) 类名TestController,换成自己的

5) 方法名list,换成自己的

6)回车执行,等待收集结果

7) trace是个非实时命令,即会收集多次请求接口

8)看图

【Java】java | arthas 使用 | arthas分析接口性能_第3张图片

9)前面是耗时,后面是方法调用跟踪,真实项目就删掉了

10)分析耗时1: 本来认为只有一个地方耗时,没想到是多个

11)分析耗时2: 对比业务场景,耗时也是合理;第一次接口请求涉及计算,耗时可以正常;第二次耗时,在for遍历,看下代码,的确有优化的空间

12)分析耗时3: 有个统计,实时查了;统计虽然讲实时性,也有优化的方案

13)分析结论

        - 第一次请求需要计算的逻辑,不能修改,保留

        - 统计查询,增加缓存,即key为查询条件md5,用redis;新增记录时,手动删除缓存

        - for耗时,待定

~~

你可能感兴趣的:(java,开发语言,arthas,jvm,性能优化)