今天写过honest-profiler+hprof2flamegraph 火焰图的玩法, 实际上我们可以集成阿里的arthas 一个方便强大的在线问题解决工具包
以下是dockerfile 的内容以及简单的使用说明
Dockerfile
FROM openjdk:11-stretch
LABEL AUTHOR="dalongrong"
LABEL EMAIL="1141591465@qq.com"
WORKDIR /
# 核心导入arthas 需要的jar 包
COPY --from=hengyunabc/:latest /opt/arthas /opt/arthas
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
这个文件不用调整,如下
#!/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
docker-compose 运行说明
添加了cap_capable 运行arthas 火焰图需要 ,为了简单我添加了ALL,如下
version: "3"
services:
app:
build: ./
cap_add:
- ALL
ports:
- "8082:8080"
volumes:
- "./logs:/opt/logs"
启动arthas 方法
启动docker-compose服务之后进入容器运行java -jar /opt/arthas/arthas-boot.jar
或自动提示需要关联的java 进程
说明
几个工具的集成主要是方便问题的分析,如果java 的容器应用比较重要,同时我们需要进行分析,那么多集成一些轻量的问题
分析工具还是不错的
一些参考资料
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
https://alibaba.github.io/arthas/docker.html