一次 OOM 排查(dump文件分析)
一、发现问题近期 OOM 故障频发一周内发生了 3 次。但每次pod重启后应用又一切正常上个版本有代码发布的同学排查了一遍新增代码没找到可疑之处。主要现象如下群里告警Grafana 告警Full GC 次数5分钟内超2次群里告警nacos、grpc 等中间件心跳连接超时集群中对应服务重启次数新增Grafana 告警 Alertname: HK-5分钟内GC次数大于2次 状态 告警❌ 内容 HK最近10分钟内的FullGC过多当前值 75.5环境prod实例10.20.56.36 应用 xxxx 时间 2025-10-13 19:48:51 详情 告警详情 来源 Grafana 地址查看 Grafana 中 JVM 问题可为什么会导致重启看看得JVM 内部 OOM → 应用假死线程卡死或频繁 Full GC→ 健康检查失败 → K8s 重启 PodTips另外一种 killOOM Killed PodKubernetes 节点的 Linux 内核 OOM Killer 杀掉了 Pod 进程可能是 JVM 进程通常是容器的内存限制被突破。 排查此问题困难之处既然知道是 OOM那就找对应 OOM 生成 dump 文件分析即可。运维侧反馈来不及 dump 文件就重启了导致dump文件丢失。最后那我又是如何得到这个 dump 文件的既然运维侧不给力那就只能靠平时多观察下这个应用的情况一有怀疑情况就找对应运维同学。恰好被我抓到一次直接坐到运维同学旁边让其帮我上容器帮我 dump 一份数据。二、定位问题2.1 定位问题dump 文件分析生成 dump 文件找运维同学操作进入对应 pod 容器中执行如下命令# 1、找到对应 PID jps -l # 2、执行只想 dump 活跃的对象 jcmd 12345 GC.heap_dump -allfalse /tmp/heap_20240602.hprof分析工具使用的是 IDEA 自带的 Profiler直接打开对应的 dump 文件展示如下可以看到byte[]和byte[][]数据是 MySQL 里的结果数据选择byte[]图中的 GC Root: Java Frame 表示在 Java 的垃圾回收GC机制中GC Root 是一组特殊的对象引用它们作为起点GC 会从这些对象开始遍历引用链找出所有可达对象。可达的对象不会被回收。Java Frame指的是某个线程的栈帧方法调用栈中的局部变量或参数引用了这个对象。GC Root: Java Frame: com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:951)这段话意思是这个byte[]对象是被某个线程的栈上的局部变量引用着。具体是在com.mysql.cj.protocol.a.NativeProtocol类的sendQueryPacket方法第 951 行中。因为它在栈上被引用所以 GC 无法回收它直到这个方法执行结束并且栈帧被销毁。找到一个具体的进入看下可以定位到某一个 SQL并将这个 SQL 展示出来。SELECT amount, currency FROM risk_message所有的线索都指向这个 SQL 查询带出来大量的数据。2.2 定位问题具体代码通过 SQL 可以缩小范围所有涉及这个表的代码主要是 2 个接口入账审核列表getInboundList汇总-入账成功金额querySummary—— BUG 点代码如下ListRiskMessage list riskMessageRepo.lambdaQuery().select(RiskMessage::getAmount, RiskMessage::getCurrency) .eq(StringUtils.isNotBlank(clientId), RiskMessage::getClientId, clientId) .in(CollectionUtils.isNotEmpty(currencyList), RiskMessage::getCurrency, currencyList) .ge(Objects.nonNull(orderStartTime), RiskMessage::getValueDate, orderStartTime) .le(Objects.nonNull(orderEndTime), RiskMessage::getValueDate, orderEndTime) .list();这个功能主要汇总金额但币种不同得按照汇率换算出来他这块实现步骤查询出所有符合条件的 金额、币种 —— 问题点在内存本地聚合根据汇率进行换算得出 USD 币种的金额问题就在查询这块没兜住直接查询出 百万条 记录导致内存在接下来的 30分钟 逐渐被占满。时间范围没生效没有强制时间范围按币种先汇总币种只有百来个返回也只有百来行直接让 AI 帮我排查这 2 个接口是否有问题claude-4-sonnet 回答道AI 的回答居然是没有问题当再次指出问题时AI 又站起来了。三、小结排查过程中发现的一些事HTTP 请求调用时间长不一定造成 OOM但一定是有问题的。MySQL IN 数量能调节可以 1w现阶段的AI编程不能完全相信会绕进一些BUG中需要人工处理。最后解决这个问题也比较简单强制选定范围按照币种 SUM返回行数最多百来行常见 Full GC 触发原因触发原因说明典型特征排查方法老年代空间不足大对象直接进入老年代或晋升失败GC 日志显示 Allocation Failure老年代使用率接近 100%查看 GC 日志中 Old Gen 使用率分析对象生命周期元空间Metaspace不足类加载过多动态生成类如反射、CGLIBGC 日志显示 Metadata GC Threshold-XX:MaxMetaspaceSize 设置过小或类加载泄漏显式调用 System.gc()代码或第三方库调用GC 日志显示 System.gc()GC 日志会显示 System.gc() 触发直接内存不足DirectByteBuffer / Netty 堆外内存耗尽堆外内存不足时 JVM 会频繁 Full GC 尝试释放 Cleaner-XX:MaxDirectMemorySize用 jcmd VM.native_memory summary 查看大对象分配失败超过 PretenureSizeThreshold 直接进老年代GC 日志显示 Promotion failed调整阈值或优化对象分配CMS/G1 的 remark 阶段失败并发回收失败退化为 Full GCGC 日志显示 concurrent mode failure 或 to-space exhausted查看 GC 日志的 concurrent mode failure 或 to-space exhausted

相关新闻

用Z-Image-Turbo做AI绘画,效果惊艳又省显存

用Z-Image-Turbo做AI绘画,效果惊艳又省显存

用Z-Image-Turbo做AI绘画,效果惊艳又省显存 你有没有试过点开一个AI绘画工具,刚输入“一只在咖啡馆看书的温柔女孩”,等了半分钟,进度条卡在92%,显存占用飙到98%,最后弹出一行红字:“CUDA out …

2026/7/3 19:11:36 阅读更多 →
告别复杂部署!科哥的人像卡通化镜像开箱即用

告别复杂部署!科哥的人像卡通化镜像开箱即用

告别复杂部署!科哥的人像卡通化镜像开箱即用 你是否试过为一张照片调半天滤镜,却始终达不到想要的二次元效果?是否在GitHub上翻遍项目README,被CUDA版本、PyTorch兼容性、模型权重下载路径绕得头晕眼花?是否刚配好环境…

2026/7/3 19:11:38 阅读更多 →
一键安装单节点 Zookeeper 3.8.5(附完整 Bash 脚本)

一键安装单节点 Zookeeper 3.8.5(附完整 Bash 脚本)

适用环境:CentOS / Ubuntu / 其他 Linux 发行版 用途:开发测试、学习 Zookeeper 基础使用 ✅ 前提条件 以 root 用户运行(或具有 sudo 权限)已安装完整 JDK(非 JRE),并正确配置 JAVA_HOME 环境…

2026/7/3 19:11:42 阅读更多 →

最新新闻

STM32 USART 轮询与中断模式对比:实测 115200 波特率下 CPU 占用率差异

STM32 USART 轮询与中断模式对比:实测 115200 波特率下 CPU 占用率差异

STM32 USART轮询与中断模式深度评测:115200波特率下的CPU占用率实测与选型指南在嵌入式开发中,串口通信(USART/UART)是最基础也最常用的外设之一。无论是调试信息输出、传感器数据采集,还是与上位机通信,都离不开它。但对于资源有…

2026/7/8 9:11:52 阅读更多 →
永久保存青春记忆:QQ空间导出助手完整备份指南

永久保存青春记忆:QQ空间导出助手完整备份指南

永久保存青春记忆:QQ空间导出助手完整备份指南 【免费下载链接】QZoneExport QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存 项目地址: https://gitcod…

2026/7/8 9:11:52 阅读更多 →
报名投票想一站式?这款投票系统报名+投票全流程搞定

报名投票想一站式?这款投票系统报名+投票全流程搞定

办过评选活动的人都知道,先拉群收集报名信息、再手动整理名单、另外开个投票链接,最后还要人工核对票数——流程割裂又费时,还容易出错。其实现在用「天天评选」这类一站式投票系统,报名和投票可以直接合并成一个活动,…

2026/7/8 9:11:52 阅读更多 →
为什么你的声音不能直接飞上天?

为什么你的声音不能直接飞上天?

—— 聊聊通信的灵魂:「调制」————————————————————————————————————————现在请你做一件事:深吸一口气,对着窗外用最大的力气喊一声"你好"。你觉得 500 米外的人能听清吗?很难…

2026/7/8 9:03:50 阅读更多 →
腾讯云AI绘画 API v20221229 实战:Python 3步完成文生图与图生图二次开发

腾讯云AI绘画 API v20221229 实战:Python 3步完成文生图与图生图二次开发

腾讯云AI绘画API深度开发指南:从文生图到图生图的全栈实践 在当今AI技术迅猛发展的浪潮中,图像生成领域正经历着前所未有的变革。腾讯云AI绘画API作为国内领先的AI创作工具,为开发者提供了强大的文生图(Text-to-Image&#xff09…

2026/7/8 9:01:49 阅读更多 →
MAX77654与PIC18F47K40的嵌入式电源管理方案

MAX77654与PIC18F47K40的嵌入式电源管理方案

1. 项目背景与核心需求 在嵌入式系统设计中,电源管理始终是决定产品可靠性和续航能力的关键因素。MAX77654与PIC18F47K40的组合方案,正是针对需要高效能、低功耗的便携式设备而设计的电源管理解决方案。这个组合的核心价值在于:MAX77654作为一…

2026/7/8 9:01:49 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻