Docker中使用火焰图FlameGraph分析JVM应用性能 | 您所在的位置:网站首页 › 如何查看docker容器jvm性能 › Docker中使用火焰图FlameGraph分析JVM应用性能 |
前言
前面的文章,我们讲述了如何通过perf的方式对java程序进行性能剖析,并生成FlameGraph火焰图,但是实际生产中,很多企业会将java部署在docker容器当中,这时对docker内运行的java进程进行剖析便成为一件很麻烦的事情。 执行步骤安装相关依赖 yum install -y git cmake gcc-c++ gcc perf下载项目 git clone https://github.com/zrbcool/docker-flame-graphs.git指定JAVA_HOME环境变量 export JAVA_HOME=/root/jdk1.8.0_181 export PATH=$JAVA_HOME/bin:$PATH编译项目 cd docker-flame-graphs/ cmake . && make找到你要分析的docker进程 docker ps | grep xxx找到这个容器的进程Pid docker inspect --format '{{.State.Pid}}' [CONTAINER_ID]修改脚本当中的JAVA_HOME保证与容器内部的JAVA_HOME一致 vi bin/create-java-perf-map.sh export JAVA_HOME=/app/3rd/jdk/default去掉脚本当中被注释的命令: vi bin/docker-perf-top #删掉下面代码前面的注释 sudo perf top -p $host_pid在docker-flame-graphs目录下,执行: docker cp $(pwd) [CONTAINER_ID]:/docker-flame-graphs然后需要确认你的JVM参数增加了-XX:+PreserveFramePointer,如果没有,需要增加并重启服务 现在所有的准备工作已经完成,让你的JVM进程运行一段时间完成JIT的预热 然后我们开始分析性能: cd bin ./docker-perf-top [CONTAINER_ID] [JAVA_ID] ./docker-perf-java-flames [CONTAINER_ID] [JAVA_ID] docker-perf-top效果svg图像可以下钻等操作,请打开链接查看点我 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |