你是否遇到过这些问题?
- 零碎存在性能问题
- 问题排查时一头雾水,不晓得用什么工具
- 查找工具,下载和装置都很浪费时间
- 排查问题非常繁琐,想尽量简化排查计划以供后续应用
XPocket 是 PerfMa 开源的为终结性能问题而生的 插件容器 ,它将定位或者解决各种性能问题的常见的Linux 命令,JDK 工具,出名性能工具 等适配成各种 XPocket 插件,并让它们能够互相联动,一键解决特定的性能问题。
目前 XPocket 插件生态曾经实现了 HSDB、JDB、JConsole、Perf、Arthas 等多个优良的开源性能工具的插件化集成。XPocket 反对 JDK 8+,反对 Linux/Mac/Windows,采纳命令行交互模式,提供丰盛的 Tab 主动补全性能,反对管道操作。
以下是 XPocket 官网提供的局部插件使用指南及实在案例。
1.XPocket 插件 jstack_x 助力线程问题排查
https://heapdump.cn/article/2…
在程序开发过程中,开发人员通常会遇到许多线上问题,这些问题可能是代码 Bug 导致的,也可能是性能问题引起的。这些线上问题都会通过 CPU 飙升、GC 频繁、抛出 OOM 异样等状况体现进去,这些问题的根因很可能是因为线程或线程池使用不当造成的。为了尽快定位根因,能够应用 jstack_x 插件以线程为切入点进行排查。
XPocket 插件 jstack_x 在 JDK 自带的 jstack 工具上进行了加强,除了反对 java 栈和本地栈的输入外,还能够从锁的角度查看期待或持有锁的线程,另外还能够通过线程名称和 nid 过滤出特定的线程。
本文应用 jstack_x 插件别离排查了线程的 CPU 使用率飙升、无心中创立了超量的线程以及大量线程期待获取共享资源的问题,XPocket 的 jstack_x 插件在 JDK 原有的 jstack 工具上做了加强,可能帮忙每个开发者更加疾速地排查定位出线程相干的问题。
jstack_x 插件下载地址
https://plugin.xpocket.perfma…
XPocket 下载地址
https://xpocket.perfma.com/do…
2. 应用 XPocket 插件 JConsole 排查线上 OOM 异样案例
https://heapdump.cn/article/2…
XPocket 插件 JConsole 次要用于内存问题的排查,可能对堆中的 Eden、Survivor、Old 区以及堆外的 Metaspace、Code Cache 等区域进行察看。
本文应用 JConsole 插件排查了频繁类加载引起 OOM 异样以及堆内存透露引起 OOM 异样的问题,JConsole 可能排查 Java 过程内存的应用状况,特地是在排查过程中要进行屡次打印,比对数值来发现问题。如果要进一步在代码级别定位问题,还能够应用 XPocket 中的其它插件进行辅助定位。
JConsole 插件下载地址
https://plugin.xpocket.perfma…
3. 应用 Perf 插件跟踪过程切换信息
https://heapdump.cn/article/2…
CPU 使用率是最直观和最罕用的零碎性能指标,是在排查性能问题时会关注的第一个指标。而在导致 CPU 使用率过高的因素中,过程切换问题也是十分常见的。过程上下文切换次数较多的状况下,很容易导致 CPU 将大量工夫耗费在寄存器、内核栈、页表等资源的保留和复原上,以至于导致系统性能不能充分利用。
但过程切换次数过多或切换次数异样的时候,针对 C /C++ 程序调式伎俩十分无限,很难找到过程切换的起因,Perf 插件自身能够跟踪过程切换调用栈并进行统计,本文借助一个简略例子验证了此插件的性能。
在碰到零碎过程过程切换次数异样的问题时能够借助 Perf 插件,排查出具体函数。
Perf 插件下载地址
https://plugin.xpocket.perfma…
4. 应用 Top_X 插件排查内存过载问题
https://heapdump.cn/article/2…
Top 命令是 Linux 零碎下罕用的监控工具,用于实时获取过程级别的 CPU 或内存应用状况。
XPocket 中的 Top_X 为 Linux Top 的增强版,能够显示 CPU 占用率 / 负载,CPU 及内存过程应用的 list。它对于繁冗的 top 命令输入进行了性能的拆分和整顿,更加清晰易用,反对管道化,尤其能够间接拿到 top 过程或线程 tid,pid; mem_s 命令减少了依照过程 swap 大小占用排序加强了原有 top 性能。
本文模仿一机器内存透露应用了大量物理内存导致物理内存飙升的状况。
在碰到内存过载问题时能够借助 Top_X 插件排查内存占用状况。
Top_X 插件下载地址
https://plugin.xpocket.perfma…
5. 应用 VJMap 排查频繁 YGC 问题
https://heapdump.cn/article/2…
分代版的 jmap(新生代,存活区,老生代),是排查内存迟缓泄露,老生代增长过快起因的利器。因为 jmap -histo PID 打印的是整个 Heap 的对象统计信息,而为了定位过程频繁 YGC 的问题,咱们须要专门查看 OldGen 对象,和 Survivor 区大龄对象的工具。
本文首先应用 VJMap 插件查看了频繁 YGC 过程的年老代的内存应用状况,而后联合 HeapDump 社区的 XElephant 工具进行 dump 文件剖析,最初排查出了问题所在。
VJMap 插件下载地址
https://plugin.xpocket.perfma…
XPocket 下载地址
https://xpocket.perfma.com/do…