Administrator
发布于 2025-04-27 / 0 阅读
0
0

一些常用的java性能测试、分析工具介绍与使用

Linux命令行

jvm

主要是Linux的JDK自带一些命令,用于观察jvm变化趋势,通过变化趋势观察是否存在性能问题。

jstack:线程栈,一般用于线程栈溢出、直接内存溢出。

jstat:GC变化趋势、jvm堆内存占用趋势,观察gc时间和趋势,得到是否存在内存泄漏

jinfo:jvm配置参数信息

jmap:内存快照,获取这一时刻所有的内存对象,一般用与内存溢出、内存泄漏等问题

常用命令:

jstack -l 999 >jstack.log          //打印进程id=999的java服务的瞬时线程栈,输出到jstack.log文件中

jstat -gcutil 999 1000 1000 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } '     //随时间实时打印进程id=999的java服务的jvm GC详情,1000 1000表示每1000ms打印一次、打印1000次

jmap -dump:format=b,file=cs3devicedump_fullgc.hprof 999    //打印进程id=999的java服务的内存快照,输出到cs3devicedump_fullgc.hprof文件中

文本处理

主要用于过滤日志,统计次数,验证数据一致性和数据完整性

Linux三剑客:

awk

grep

sed

其他:

vim

head、tail

开源工具

arthas:阿里推出的开源工具,可监控jvm/线程、动态修改代码、抓取SQL、捕获java代码的调用耗时等,适用于你有较高的用户权限,强烈推荐。

jprofiler:图形化工具,可采样一段时间,并图形化输出采样期间的各种jvm数据、DB调用数据、耗时数据;也可实时显示性能数据。但需要破解(可能吃律师函),且通常只支持虚拟机环境,容器环境配置较麻烦。

jmeter:接口调试工具、开源压测工具,对于java代码的支持比较友好,适合二次开发,尤其是涉及TCP、MQTT等协议的压测、二次开发(完全开源,可进行自定义二次开发,强烈推荐)。

IBM三剑客:ja、ha、ga,分析线程栈、内存快照、gc日志的开源工具,由IBM公司推出。(强烈推荐,但需要一定jvm基础)。

付费工具

dynatrace:与jprofiler类似,图形化工具,采样一段时间,并图形化输出采样期间的各种jvm数据、DB调用数据、耗时数据。


评论