背景
有个 ES 集群,业务写数入集群时经常导致集群 CPU 告警和集群端口响应超时(20s无响应),故希望通过采集火焰图分析原因。
工具选择
Arthas
Introduction
Arthas
是Alibaba开源的Java诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
Arthas
支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab
自动补全功能,进一步方便进行问题的定位和诊断。
以上描述摘自官方描述~~~
Arthas 自 3.1.5 版本起集成了开箱即用的 Profiler / 火焰图功能,因此首选了通过 Arthas 工具来采集。
- 国内镜像网站 Gitee: https://gitee.com/arthas/arthas
- Github: https://github.com/alibaba/arthas
- 文档:https://alibaba.github.io/arthas