go-torch -u http://localhost:8888/debug/pprof/ -p >profile-local.svg
效果图如下:
生成内存火焰图:
go-torch -u http://localhost:8888/debug/pprof/heap -p >heap-local.svg
效果图如下:
也可以分步骤查看结果:
1.Centos7 使用报错
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LC_PAPER = "en_US.UTF-8",
LC_MONETARY = "en_US.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MEASUREMENT = "en_US.UTF-8",
LC_CTYPE = "en_US.UTF-8",
LC_TIME = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
解决方法:
export LC_ALL="C"
步骤:
1. 安装Arthas
wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.5.4/arthas-bin.zip
mkdir -p arthas
unzip arthas-bin.zip -d arthas
2. attach目标程序
2.1 arthas
选择进程号
2.3 开始生成
profiler start
手动停止
profiler stop
火焰图svg文件会被存放到指定目录
接下来是解析环节,如何看出哪些行为占用的CPU较大
总的来说
1. 颜色本身没有什么意义
2. 纵向表示调用栈的深度
3. 横向表示消耗的时间
横向来看
由于横向表示消耗的时间,所以一个格子的宽度越大越说明其可能是瓶颈
纵向来看
由于纵向表示调用栈的深度,所以火焰的火苗尖部就是CPU正在执行的 *** 作
综上
主要看那些比较宽大的火苗
特别是那些平头的火苗
上述是默认的CPU火焰图
我们还可以利用它来生成内存火焰图 $ profiler start --event alloc
更多使用说明参考:https://arthas.aliyun.com/doc/profiler.html
或者我们可以自己通过JVMTI机制来实现一把
本质上火焰图和其他jstack等工具的实现原理一样,并且要解决的问题都是分析线上运行中的程序的各种运行时情况,帮助我们排查一些问题故障
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)