JAVA Heap Dump 采集最佳实践

JAVA dump 堪称 JVM 运行时的"高清 CT 影像":其中 heap dump 以二进制 hprof 格式完整记录堆内每一个存活对象、类加载器及错综复杂的引用链,借助 retained size 计算可精准量化内存泄漏源头;thread dump 则瞬间捕获全部 JAVA 线程的调用栈、锁竞争、等待队列与 CPU 使用快照,一眼即可识别死锁、线程池耗尽或慢调用瓶颈。

观测云在此基础上进一步"把望远镜送进机房":通过中心式 Agent 向任意 IP/端口上的目标 JVM 下发加密指令,一键触发 jmap 内置命令,本地生成标准 hprof 格式 dump 后,立即调用内嵌 OSS SDK 以流式分片上传,文件不落本地磁盘、不暴露 AccessKey,上传完毕自动回传元数据与 SHA256 摘要到观测云控制台,完成"一键拍照、云端阅片"的闭环,让曾经高门槛的 JVM 级诊断变成随取随用的 SaaS 能力。

通过观测云平台,能把传统"登录机器→手动 jmap→scp 下载→本地 MAT/VisualVM 分析"这一动辄数小时的繁琐流程,压缩到 30 秒内完成,真正实现"现场冻结、秒级取证"。

实践

当前最佳实践是基于 Kubernetes 环境,通过观测云平台一键生成 JAVA dump 信息并上报至 AWS S3 。

前置条件

  • 已注册观测云帐号
  • Kubernetes 环境已集成 DataKit
  • 拥有可写入 AWS S3 桶权限的 AK/SK
  • DataKit 版本≥1.83.0

创建 S3 桶

S3 桶用于存储 dump 文件。

DataKit 开启 dump 文件存储

调整 datakit.yaml,新增以下内容,填写 aws 相关配置。调整完成后,重新执行 apply 操作。

yaml 复制代码
        - name: ENV_REMOTE_JOB_ENABLE
          value: 'true'
        - name: ENV_REMOTE_JOB_ENVS
          value: >-
                REMOTE=aws,AWS_DEFAULT_REGION=cn-northwest-1,AWS_ACCESS_KEY_ID=xxxxxxx,AWS_SECRET_ACCESS_KEY=xxxxxx,AWS_BUCKET_NAME=java-dump
        - name: ENV_REMOTE_JOB_INTERVAL
          value: 100s

其他云厂商存储参考文档 docs.guance.com/datakit/dat...

创建任务

登录观测云平台,应用性能监测 - 服务 - 服务清单,选择对应的 java 服务,点击创建内存快照按钮进行创建。

内存快照需要找到对应的目标方可创建。

点击历史快照按钮,可以查看创建的历史记录及快照状态、日志信息。

快照执行日志详情。

验证 S3 是否存储成功

登录 S3 控制台查看是否有对应的文件生成。

验证快照文件是否可用

从 S3 下载快照后,在本地尝试解析。

可以使用 jhat 命令解析 dump文件,并用浏览器直接查看,格式 jhat <dump-file-name>

浏览器访问 7000 端口。

F&Q

服务清单找不到对应的服务

服务清单数据是基于链路信息按照每小时一次进行构建的,页面上会展示上次更新的时间,所以需要先有链路访问才会有对应的服务。

有服务,但找不到执行目标

如果一个服务长期没有链路,比如一天都没有链路,则不会有执行目标,需要进行业务访问对应服务产生链路后才会看到执行目标。

相关推荐
小马爱打代码11 小时前
Spring Boot:模块化实战 - 保持清晰架构
java·spring boot·架构
小坏讲微服务11 小时前
SpringBoot4.0整合knife4j 在线文档完整使用
java·spring cloud·在线文档·knife4j·文档·接口文档·swagger-ui
8***Z8911 小时前
springboot 异步操作
java·spring boot·mybatis
i***132411 小时前
Spring BOOT 启动参数
java·spring boot·后端
坚持不懈的大白11 小时前
后端:SpringMVC
java
IT_Octopus11 小时前
(旧)Spring Securit 实现JWT token认证(多平台登录&部分鉴权)
java·后端·spring
kk哥889912 小时前
Spring详解
java·后端·spring
S***267512 小时前
Spring Cloud Gateway 整合Spring Security
java·后端·spring
Tao____12 小时前
开源物联网平台
java·物联网·mqtt·开源·设备对接
遇到困难睡大觉哈哈12 小时前
Harmony os——ArkTS 语言笔记(四):类、对象、接口和抽象类
java·笔记·spring·harmonyos·鸿蒙