美文网首页
使用arthas生成java程序cpu火焰图

使用arthas生成java程序cpu火焰图

作者: ShootHzj | 来源:发表于2021-09-29 17:42 被阅读0次

    环境准备

    需要有一个运行的java程序,如果你已经有了运行中的java程序,请跳过这一节,示例,我启动自制的kafka镜像

    docker run ttbb/kafka:mate
    

    找到java程序的pid

    ps -ef或者jps均可,其中jps需要安装jdk

    image-20210929143232887

    安装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
    

    使用arthas连接到目标程序

    image-20210929143537663

    开始profiler

    profiler start
    

    如果出现Perf events unavailable. See stderr of the target process.如图所示

    image-20210929143621015

    需要在docker所在虚拟机上执行如下命令

    echo 1 > /proc/sys/kernel/perf_event_paranoid
    echo 0 > /proc/sys/kernel/kptr_restrict
    

    如果是mac用户

    docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
    

    执行上述命令进入docker所在的虚拟机操作即可

    注意,在部分docker版本中,有可能还无法进行profiler采集,您可能需要以特权方式启动容器,不过,为了定位性能问题,这总是值得付出的,不是吗?

    image-20210929151106090

    等待profiler一段时间

    一般等待一分钟即可

    结束profiler

    profiler stop
    
    image-20210929151209352

    结束

    Congratulations,完成了火焰图的输出,现在你可以使用火焰图来分析执行时间较长的方法啦

    image-20210929151506122

    相关文章

      网友评论

          本文标题:使用arthas生成java程序cpu火焰图

          本文链接:https://www.haomeiwen.com/subject/zmejnltx.html