• 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

  • 相关阅读:
    使用ab进行页面的压力测试
    apache http server2.2 + tomcat5.5 性能调优
    php Try Catch多层级异常测试
    用flask实现的添加后保留原url搜索条件
    会议室预定设计
    day4
    day3
    day2
    day1
    redis介绍以及安装
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12131913.html
Copyright © 2020-2023  润新知