官方文档 | 【JVM 调优体系】「GC 底层调优实战」XPocket 为终结性能问题而生—开发指南
XPocket 用户文档
XPocket
是 PerfMa 为终结性能问题而生的开源的插件容器,它是性能领域的乐高,将定位或者解决各种性能问题的常见的 Linux 命令,JDK 工具,知名性能工具等适配成各种 XPocket 插件,并让它们可以相互联动一键解决特定的性能问题。 目前 XPocket 插件生态已经实现了 HSDB、JDB、JConsole、Perf、Arthas 等多个优秀的开源性能工具的插件化集成,现阶段主要侧重性能领域。
当你遇到以下类似问题时,XPocket
可以帮助到你:
系统存在性能问题?
问题排查时一头雾水,无从下手?
使用一个新的工具,下载、文档、安装完就下班了?
好不容易用起来,只因输出不合理就又要去找新工具?
有些自己实现的小工具散落各处?
排查过的问题记不记住全凭脑子?
XPocket
支持 JDK 8+,支持 Linux/Mac/Windows,采用命令行交互模式,提供丰富的 Tab
自动补全功能,支持管道操作。
插件开源生态
XPocket 在线教程
XPocket 官方网站
XPocket 插件中心
快速开始
1.下载模拟程序,解压并运行
2.下载 xpocket,然后解压并运行
启动成功后如下所示
3.使用插件
1.查看插件列表
列表如下图所示
2.使用命令 use + pluginName 或者 use + pluginName@NameSpace 来使用插件,例
4.切换插件
查看插件列表
使用 use + pluginName 或者 use + pluginName@NameSpace 来使用插件
5.获取帮助
利用 help 命令来获取更多帮助信息
获取插件相关的帮助信息 : help + pluginName@NameSpace ,例如。
获取命令相关的帮助信息 : help + pluginName.commandName (如果已经切换到插件的操作空间下,可以直接使用 help + commandName 的方式),例如。
切换到某个插件的操作空间下后,可以通过 help 命令查看当前插件的命令列表。
6.管道操作
场景:当前插件位于 JConsole 下,需要 attach 上我们的 demo 程序。
常规操作(jps -> 获取 demo 程序的 pid -> 使用 attach 命令 attach 目标进程)。
XPocket 的管道操作只需一条命令即可(jps | grep demo | split -i 0 | attach),如下所示。
7.退出插件
XPocket 退出插件的方式很简单,只需要使用命令 cd
即可,cd 命令可以退出当前插件,使得当前的操作空间回到系统层
8.退出 XPocket
退出 XPocket 使用命令 quit
即可,如下图所示
运行模式
1. telnet server 模式
该模式会启动一个静默模式的 XPocket,以对应端口的 Telnet Server 接受外部链接并使用,适用于远程执行操作的场景。
2. run once 模式
该模式是启动 XPocket 运行完指定命令以后直接退出,适用于外部调用完成单次操作的场景。
3. Java Agent 模式
该模式与 telnet 模式类似,但是是将 XPocket 整体作为一个 Java Agent 挂载到目标进程上运行,适用于容器类场景,并且可以获取更多 JVM 运行时信息。
插件开发
详情请见开发者指南
现有插件
HSDB
简介
探索 JVM 的运行时数据,强大的 JVM 运行时状态分析工具(注:由于 jdk8 以上开始实施模块化,导致 HSDB 与其的运行机制不兼容)。
操作指南
更多操作以及介绍请参考官方介绍
JDB
简介
Java 调试器(JDB)是 Java 类在命令行中调试程序的工具, 它实现了 Java 平台调试器体系结构, 它有助于使用 Java 调试接口(JDI)检测和修复 Java 程序中的错误。
操作指南
更多操作以及介绍请参考官方介绍
Perf
简介
Perf 功能强大,它可以检测 CPU 性能计数器,跟踪点,kprobes 和 uprobes(动态跟踪),它能够进行轻量级分析。它也包含在 Linux 内核的 tools / perf 下,并且经常更新和增强,Perf 最初是在 Linux 中使用性能计数器子系统的工具,并且进行了各种增强以添加跟踪功能,更详细的内容请参考Perf介绍。
操作指南
Perf 插件集成了 PerfMa 自己增加的几条命令如:analyze 命令:analyze -p [pid] (-p 指定进程采集热点)analyze -detail 查看进程 CPU 热点抓取结果同时支持 perf 原生的命令和参数,并且针对 java 程序集成了 perf-map-agent 这个工具,可以协助显示 java 的调用栈信息.具体使用方式见命令的帮助信息(如 help analyze)
Arthas
简介
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱,支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
操作指南
XPocket 管控了 Arthas 在 attach 进程之前的输入输出,attach 之后的具体使用请参考Arthas官方文档
JConsole
简介
JConsole 是一个内置 Java 性能分析器,用于对 JVM 中内存,线程和类等的监控,这款工具的好处在于,占用系统资源少,而且结合 Jstat,可以有效监控到 java 内存的变动情况,以及引起变动的原因。在项目追踪内存泄露问题时,很实用。
操作指南
注:插件化后的 JConsole 相比 gui 版本的 JConsole 在显示与操作上有所区别,但是数据的采集方式是一样的。
VJMap
简介
分代版的 jmap(新生代,存活区,老生代),是排查内存缓慢泄露,老生代增长过快原因的利器。因为 jmap -histo PID 打印的是整个 Heap 的对象统计信息,而为了定位上面的问题,我们需要专门查看 OldGen 对象,和 Survivor 区大龄对象的工具。vjmap 的原始思路来源于 R 大的 TBJMap ,翻新后支持 JDK8,支持 Survivor 区大龄对象过滤。注意:因为 VJMap 的原理,只支持 CMS 和 ParallelGC,不支持 G1。
操作指南
Doraemon
简介
Doraemon 是 PerfMa 开发的一款链接性能分析产品的体验工具,操作简单,功能强大,提供 jvm 参数分析,线程离线分析以及内存离线分析的功能
操作指南
插件中心
更丰富的内容,建议您前往插件中心
Tips
sa-jdi.jar 主要用于支持插件 VJMap 的正常使用(注:由于 jdk8 以上开始实施模块化,导致 VJMap 的运行机制不兼容)。
框架扩展开发的包依赖: com.perfma.xlab:xpocket-framework-spi:2.0.0-RELEASE
评论