java 应用使用jfr+sjk 生成应用火焰图

jfr 是一个低开销java分析框架,已经内置openjdk 11 中了,我们可以直接使用jcmd 进行应用的性能分析,以下是一个简单的试用
使用了sjk 结合jfr 生成java 应用的火焰图

环境准备

注意jdk 需要11,对于应用使用了一个简单的springboot 应用,后边会使用ab 进行简单的压测

  • docker-compose 文件
 
version: "3"
services: 
    app:
      build: ./
      volumes: 
      - "./app:/app"
      ports:
      - "8080:8080" 
  • Dockerfile
    基于openjdk 11 的运行环境,为了方便运行sjk以及java 应用使用volume 挂载的方式
 
FROM openjdk:11-stretch
LABEL AUTHOR="dalongrong"
LABEL EMAIL="1141591465@qq.com"
WORKDIR /app
COPY docker-entrypiont.sh /docker-entrypiont.sh
RUN chmod +x /docker-entrypiont.sh
EXPOSE 8080 
ENTRYPOINT [ "/docker-entrypiont.sh" ]
  • docker-entrypiont.sh
#!/bin/sh
java \
-XX:+FlightRecorder \
-XX:+PreserveFramePointer \
-jar /app/webapi-0.0.1-SNAPSHOT.jar
  • ab 测试
    host 机器压测
 
#!/bin/sh
ab -c 10 -n 10000 http://localhost:8080/actuator/env

启动&&使用

  • 启动
docker-compose up  -d
  • 启动jfr
    进入容器,使用jmcd 找出运行应用的pid
docker-compose exec app sh
jcmd  <pid> JFR.start name=demo

效果

 

 

  • 压测
sh ab.sh
  • dump jfr 数据
jcmd 7 JFR.dump

效果

 

 

  • 使用sjk 生成火焰图
 
java -jar /app/sjk.jar  flame -f /app/hotspot-pid-7-2020_01_03_07_23_25.jfr -o /app/appdemo.html
 

效果

 

 

  • 火焰图效果

 

 


线程选择

 

 

说明

使用jfr 以及sjk 进行火焰图分析也是一个很不错的集成方式,也可以方便的进行数据刷选

参考资料

https://github.com/aragozin/jvm-tools/blob/master/sjk-hflame/docs/flame_graph_ui.md
https://github.com/aragozin/jvm-tools
https://github.com/rongfengliang/jfr-sjk-flame-graph-learning
https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm
https://www.ibm.com/developerworks/cn/java/j-lo-performance-analysissy-tools3/index.html

posted on   荣锋亮  阅读(1556)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-01-03 masterlab 敏捷项目管理工具
2019-01-03 luarocks 自定义包发布试用
2018-01-03 jest js 测试框架-简单方便人性化
2014-01-03 Nginx 安装成Windows 服务方法
2014-01-03 Windows环境下用jwplayer+Nginx搭建视频点播服务器
2014-01-03 我的nginx iis 负载均衡学习(环境搭建)
2014-01-03 windows 版nginx 的一些基础知识

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示