zoukankan      html  css  js  c++  java
  • honest-profiler+hprof2flamegraph 查看java 应用火焰图信息

    honest-profiler 一个强大的jvm性能分析agent,通过hprof2flamegraph我们可以生成火焰图,以下是使用docker 运行的一个
    demo

    环境准备

    对于hprof2flamegraph 使用python3 的venv 模块

    • docker-compose 文件
    version: "3"
    services: 
       app:
         build: ./
         ports:
         - "8082:8080" 
         volumes: 
         - "./logs:/opt/logs"
    • Dockerfile
    FROM openjdk:11-jre
    LABEL AUTHOR="dalongrong"
    LABEL EMAIL="1141591465@qq.com"
    WORKDIR /
    COPY webapi-0.0.1-SNAPSHOT.jar /webapi-0.0.1-SNAPSHOT.jar
    COPY docker-entrypiont.sh /docker-entrypiont.sh
    COPY honest-profiler/liblagent.so /opt/liblagent.so
    RUN chmod +x /docker-entrypiont.sh
    EXPOSE 8080 
    ENTRYPOINT [ "/docker-entrypiont.sh" ]
    • docker-entrypiont.sh
      java 应用运行的参数配置
     
    #!/bin/sh
    LOGPATH=/opt/logs
    java 
    -agentpath:/opt/liblagent.so=interval=7,logPath=${LOGPATH}/log.hpl 
    -XX:+FlightRecorder 
    -XX:+PreserveFramePointer 
    -jar /webapi-0.0.1-SNAPSHOT.jar
    • 安装hprof2flamegraph
      因为hprof2flamegraph 使用venv 使用也比较简单(python3)
     
    mkdir -p hprof2flamegraph
    cd hprof2flamegraph
    python -m venv venv
    source venv/bin/activate
    pip install hprof2flamegraph

    启动应用&&使用

    • 启动服务
    docker-compose up -d
    • 简单的ab 测试
    #!/bin/sh
    ab -c 10 -n 100000 http://localhost:8082/actuator/env
    • 生成stackcollapse

      使用hprof2flamegraph

    hprof2flamegraph/venv/bin/stackcollapse-hpl logs/log.hpl > out/output-folded.txt
    • 生成火焰图
    hprof2flamegraph/venv/bin/flamegraph.pl out/output-folded.txt > out/output.svg
    • 查看效果

    说明

    以上是一个简单的试用,hprof2flamegraph 也可以用来生成hhprof 文件的火焰图,是一个很不错的jvm 性能分析工具,async-profiler 也是一个很不错的工具

    参考资料

    https://github.com/jvm-profiling-tools/honest-profiler
    https://github.com/cykl/hprof2flamegraph
    https://github.com/rongfengliang/honest-profiler-hprof2flamegraph
    https://github.com/brendangregg/FlameGraph

  • 相关阅读:
    laravel5.3统计 withCount()方法的使用
    laravel whereDate()方法的使用
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12131913.html
Copyright © 2011-2022 走看看