JVM调优过程

Published on with 28 views

生成Dump文件(JVM堆转储快照)

由于生产环境是部署在阿里云自建K8S系统中,故在自建的Sit环境中模拟之:

  • SVN检出代码
  • mvn install 编译打包
  • docker build 构建镜像
  • docker push 推送到公司docker私服
  • 在K8S中启动

这里有个小插曲,由于之前为了节约资源,基础镜像是基于alpine制作的tomcat镜像,里边的java没有安装jdk自带的一些调试工具,在pod中折腾了半天也没添加上,索性重新制作了一个标准的包含jmap等各种工具的镜像。

安装成功后,重新构建上传启动,运行成功,进入pod,使用jmap生成dump文件:

  1. 创建文件夹
mkdir /dumps
  1. 查看pid
ps -ef|grep java
  1. 使用jmap生成:
jmap -dump:format=b,file=/dumps/jmap.hprof [pid]
  1. 将dump文件拷贝到宿主机:
kubectl cp -n [namespace] [podname]:/dumps/jmap.hprof /root/jmap.hprof

至此,成功拿到了一个500多mb的堆存储快照,我把它拷贝到自己的mac上,准备进行下一步分析。

分析Dump文件(MacOS上)

  1. 打开JDK自带可视化工具VisualVM:
    资源库 > Java > JavaVirtualMachines > jdk1.8.0_181.jdk > Contents > Home > bin > jvisualvm
  2. 将刚才的文件导入
  3. 进行分析

标题:JVM调优过程
作者:jenphyjohn
地址:http://blog.join-e.tech/articles/2020/05/28/1590658126374.html

Responses