性能优化可使用的工具
在分析 CPU、内存、磁盘等的性能指标时,有几种工具是高频出现的,如 top、vmstat、pidstat,这里稍微总结一下:
- CPU:top、vmstat、pidstat、sar、perf、jstack、jstat;
- 内存:top、free、vmstat、cachetop、cachestat、sar、jmap;
- 磁盘:top、iostat、vmstat、pidstat、du/df;
- 网络:netstat、sar、dstat、tcpdump;
- 应用:profiler、dump分析。
上述的很多工具,大部分是用于查看系统层指标的,在应用层,除了有 JDK 提供的一系列工具,一些商用的产品如 gceasy.io(分析 GC 日志)、fastthread.io(分析线程 dump 日志)也是不错的。
排查 Java 应用的线上异常或者分析应用代码瓶颈,可以使用阿里开源的 Arthas ,这个工具非常强大,下面简单介绍下。
Arthas 主要面向线上应用实时诊断,解决的是类似线上应用异常了,需要在线进行分析和定位」的问题,当然,Arthas 提供的一些方法调用追踪工具,对我们排查诸如「慢查询」等问题,也是非常有帮助的。Arthas 提供的主要功能有:
- 获取线程统计,如线程持有的锁统计、CPU 利用率统计等;
- 类加载信息、动态类加载、方法加载信息;
- 调用栈追踪,调用耗时统计;
- 方法调用参数、结果检测;
- 系统配置、应用配置信息;
- 反编译加载类;