Bistoury项目命令详解:从基础到高级的JVM诊断工具指南
bistoury Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案 项目地址: https://gitcode.com/gh_mirrors/bi/bistoury
前言
Bistoury是一款强大的Java诊断工具,提供了丰富的命令集来帮助开发者快速定位和解决Java应用中的各种问题。本文将全面介绍Bistoury中的各类命令,从基础文件操作到高级JVM诊断功能,帮助开发者更好地利用这个工具进行问题排查。
基础文件操作命令
ls命令:文件列表查看
ls
命令用于显示目标目录下的文件列表,功能与Linux中的ls
命令类似。当选择单台机器时,命令在单机上执行;选择多台机器时,可同时在多台机器上执行;未选择机器则默认在所有机器上执行。
常用选项包括:
-l
:以长格式显示详细信息-a
:显示所有文件(包括隐藏文件)-h
:以易读格式显示文件大小-t
:按修改时间排序
cat命令:文件内容查看
cat
命令用于连接文件并打印到标准输出,常用于查看文件内容。其特色功能包括:
- 支持多个文件同时查看
- 可显示行号(
-n
选项) - 能处理特殊字符显示(
-A
选项)
tail命令:实时日志监控
tail
命令特别适合用于监控日志文件,其核心功能包括:
- 默认显示文件末尾10行
-f
选项可实时跟踪文件变化-n
指定显示行数- 支持从文件开头第N行开始显示(使用
+N
语法)
对于需要实时监控日志的场景,tail -f
命令是不可或缺的工具。
JVM相关诊断命令
dashboard命令:实时监控面板
dashboard
命令提供了一个全面的实时监控面板,展示当前系统的关键指标:
-
线程信息:
- 线程ID、名称、状态
- CPU占用率
- 运行时间
- 是否守护线程
-
内存信息:
- 堆内存使用情况
- 非堆内存使用情况
- 各内存区域使用率
-
GC信息:
- GC次数
- GC耗时
-
运行时信息:
- 操作系统信息
- Java版本
thread命令:线程分析利器
thread
命令是分析线程问题的强大工具,主要功能包括:
-
查看所有线程:
- 显示线程状态统计
- 各线程的CPU占用率
-
查看特定线程堆栈:
- 通过线程ID查看详细堆栈
- 显示锁信息
-
查找最忙线程:
-n
参数显示最忙的N个线程-i
参数设置采样间隔(毫秒)
-
查找阻塞线程:
-b
参数一键找出阻塞其他线程的"罪魁祸首"
jstack命令:线程转储分析
jstack
命令用于获取Java进程的完整线程转储,功能特点:
- 显示所有线程的完整堆栈信息
- 区分线程状态(RUNNABLE、WAITING等)
- 可识别JVM内部线程(如GC线程)
- 结果可下载保存供后续分析
类与类加载器相关命令
sc命令:类信息查询
sc
(Search Class)命令用于查看JVM已加载的类信息:
- 支持模糊查询类名
- 显示类加载器信息
- 可查看类注解信息
jad命令:反编译利器
jad
命令可将JVM中已加载的类反编译为Java代码:
- 支持反编译匿名内部类
- 可显示行号信息
- 结果可直接查看或保存
redefine命令:热修复类
redefine
命令允许动态重新定义已加载的类:
- 支持从外部.class文件加载
- 实现不重启应用的热修复
- 需注意修改限制(如不能修改方法签名)
监控与追踪命令
watch命令:方法观测
watch
命令用于观测方法执行时的数据:
- 可查看入参、返回值
- 能捕获异常信息
- 支持条件表达式过滤
trace命令:调用链路追踪
trace
命令能显示方法内部调用路径及耗时:
- 可视化调用链路
- 标注每个节点的耗时
- 帮助定位性能瓶颈
tt命令:调用历史记录
tt
(Time Track)命令记录方法调用的历史信息:
- 记录每次调用的入参和返回值
- 支持回放特定调用
- 可比较不同时间点的调用差异
高级功能与技巧
多机器并行执行
Bistoury的一个强大特性是支持在多台机器上并行执行命令:
- 单机执行:选择特定机器
- 多机执行:选择多台机器同时执行
- 全局执行:不选择机器时在所有机器上执行
压缩文件处理
zgrep
命令可直接在压缩文件中搜索内容,无需解压:
- 支持.gz等压缩格式
- 保留grep的所有功能
- 特别适合分析历史日志
内存分析工具
heapdump
命令可生成Java堆转储文件:
- 类似jmap的heap dump功能
- 可用于内存泄漏分析
- 生成文件可用MAT等工具分析
总结
Bistoury提供了一套完整的Java应用诊断工具集,从基础的文件操作到高级的JVM诊断功能,能够满足开发者在日常开发和生产环境中的各种问题排查需求。掌握这些命令的使用方法,可以显著提高问题定位的效率,是Java开发者必备的技能之一。
建议读者在实际工作中多加练习这些命令,结合具体问题场景灵活运用,逐步积累经验,最终成为Java应用诊断的专家。
bistoury Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案 项目地址: https://gitcode.com/gh_mirrors/bi/bistoury
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考