云监控 2.0 升级:SysOM 系统诊断在 Java 内存问题排查中的应用

作者:肖杰韬(六滔)

背景

在前一篇文章《一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理》 [ 1] 中,我们系统性地剖析了云原生环境中隐性内存开销的诊断方法,通过 SysOM 系统诊断实现了对节点/Pod 级由文件缓存、共享内存等系统级内存资源异常消耗的精准定位。

然而,部分场景下内存异常仍可能源于应用进程本身的内存申请,但是对于应用内存泄漏问题,尽管是应用的开发者,也需要投入大量的精力去利用对应语言的内存分析工具去找出根因;以 Java 应用为例,当传统线下 IDC 集群中的 Java 应用完成云原生架构转型后,伴随容器化封装与资源配额管控的实施,用户普遍反馈 Java 应用 Pod 出现持续性内存超限及 Kubernetes OOMKilled 事件。这一系列现象主要集中在三个关键矛盾点:

  1. 容器内存监控与 JVM 堆内存的显著差异: Pod 内存占用常超出 JVM 堆内存(含堆外内存)数倍,形成“消失的内存”谜团。

  2. 容器化改造后的 OS 兼容性问题: 同一业务系统在切换 OS 或容器化后,出现内存占用模式突变。

  3. 工具链覆盖盲区: 传统 Java 内存分析工具无法覆盖 JNI 内存、LIBC 内存等非 JVM 内存区域。

为此,云监控 2.0 [ 2] 中的 SysOM 系统诊断对应用内存进一步深挖,结合应用和操作系统的角度实现对主机、容器运行时及具体的 Java 应用进程进行内存占用拆解,快速有效地识别出 Java 内存占用的元凶。

Java 内存全景分析

为了找出消失的内存,我们首先要了解 Java 进程的主要内存组成以及现有工具和监控主要覆盖的部分;如下图所示可分为:

JVM 内存

  • 堆内存: 可通过 -Xms/-Xmx 参数控制,内存大小可通过 memorymxbean 等获取。
  • 堆外内存: 包括元空间、压缩类空间、代码缓冲区、直接缓冲、线程栈等内存组成;它们分别可以通过 -XX:MaxMetaspaceSize(元空间)、-XX:CompressedClassSpaceSize(压缩类空间)、-XX:ReservedCodeCacheSize(代码缓冲区)、-XX:MaxDirectMemorySize (直接缓冲)、-Xss(线程栈)参数限制。

非 JVM 内存

  • JNI 本地内存: 即通过本地方法接口调用 C、C++ 代码(原生库),并在这部分代码中调用 C 库(malloc)或系统调用(brk、mmap)直接分配的内存。

image

Java 常见“内存泄露”

JNI 内存泄漏

经过上一章中对 Java 内内存全景的分析,其实已经可以揭开第一个容易造成内存黑洞的隐藏 Boss-JNI 内存,因为这部分内存暂时没有工具可以获取其占用大小。

通常来说,编写相关业务代码的同学会认为代码中没有使用本地方法直接调用 C 库,所以不会存在这些问题,但是代码中引用的各种包却有可能会使用到 JNI 内存,比如说经典的使用 ZLIB 压缩库不当导致的 JNI 泄漏问题 [ 3]

LIBC 内存管理特性

JVM 向 OS 申请内存的中间,还存在着一层中间层 -C 库,JVM 调用 malloc、free 申请/释放内存的过程中其实还要经过这一个二道贩子;以 gibc 中默认的内存分配器 ptmalloc 为例 glibc 的 ptmalloc 内存分配器存在以下特征:

  • Arena 机制: 每个线程维护 64M Arena,多线程场景下易产生内存碎片
  • Top Chunk 管理: 内存空洞导致无法及时归还 OS
  • Bins 缓存策略: JVM 释放的内存暂存于 bins 中,造成统计偏差 [4-5]

image

Linux 透明大页(THP)影响

在 OS 层,Linux 中的透明大页(Transparent Huge Page)机制也是造成 JVM 内存和实际内存差异的一大元凶。简单来说,THP 机制就是 OS 会将 4kb 页变成 2M 的大页,从而减少 TLB miss 和缺页中断,提升应用性能,但是也带来了一些内存浪费。如应用申请了一段 2M 的虚拟内存,但实际只用了里面的 4kb,但是由于 THP 机制,OS 已经分配了一个 2M 的页了 [6 ]

SysOM Java 内存诊断实践

下面将以汽车行业客户在从线下 idc 集群迁移至云上 ACK 集群时遇到的由于 JNI 内存泄漏导致 Pod 频繁 OOM 为例,介绍如何通过云监控 2.0 的 SysOM 系统诊断来一步步找出 Java 内存占用的元凶。

诊断使用限制:

  • 目前仅支持 openJDK 1.8 以上版本
  • 使用 JNI 内存 Profiling 功能需要至操作系统控制台先对实例进行纳管 [ 3] ,有一定的资源和性能开销(内存占用根据符号大小最高达 300MB)

C2 compiler JIT 内存膨胀案例

案例背景

某汽车客户在 ACK 集群迁移过程中,多个 Java 服务 Pod 出现偶发性 OOM。特征表现为:

  • Pod 内存接近限制时触发 OOM
  • JVM 监控显示内存正常
  • 无明显请求异常或流量波动

排查过程

  • 尝试在内存高水位时对 Pod 发起内存全景分析。

image

  • 我们可以了解到当 Pod 中容器内存使用已经接近 limit,从诊断结论和容器内存占用分析中,我们可以看到容器内存主要是由于 Java 进程内存占用导致。

image

对 Java 进程发起内存分析,查看诊断报告。报告展示了 Java 进程所在 Pod 和容器的 rss 和 WorkingSet(工作集)内存信息、进程 Pid、JVM 内存使用量(即 JVM 视角的内存使用量)、Java 进程内存使用量(进程实际占用内存),进程匿名用量以及进程文件内存用量。

image

通过诊断结论和 Java 内存占用饼图我们可以发现,进程实际内存占用比 JVM 监控显示的内存占用大 570M,全都由 JNI 内存所贡献 [ 4]

image

开启 JNI(Java Native Interface)内存分配 profiling,报告列出当前 Java 进程 JNI 内存分配调用火焰图,火焰图中为所有分配 JNI 内存的调用路径。(说明:由于是采样采集,火焰图中的内存大小不代表实际分配大小)。

image

  • 从内存分配火焰图中,我们可以看到主要的内存申请为 C2 compiler 正在进行代码 JIT 预热;
  • 但是由于诊断的过程中没有发现 pod 有内存突增;所以我们进一步借助可以常态化运行的 Java CPU 热点追踪功能 [ 5] 尝试抓取内存升高时的进程热点,并通过热点对比 [ 6] 尝试对内存正常时的热点进行对比。

image

image

  • 通过热点栈和热点分析对比,发现内存突增时间点的 cpu 栈也是 c2 compiler 的 JIT 栈,且 c2 compiler 热点前有部分业务流量突增,且业务代码使用了大量反射操作(反射操作会导致 c2 compiler 进行新的预热)。

结论和解决方案

C2 compiler JIT 过程申请 JNI 内存,且由于 glibc 内存空洞等原因导致申请内存放大且延时释放。

  1. 调整 C2 compiler 参数,让其编译策略更保守,可以尝试调整相关参数,观察内存消耗变化。

  2. 调整 glibc 环境变量 MALLOC_TRIM_THRESHOLD_,让 glibc 及时将内存释放回操作系统。

总结

通过系统化的内存诊断方法,我们得以穿透 JVM 黑盒,揭示 JNI、LIBC 及 OS 层面的内存管理特性。阿里云操作系统控制台的内存全景分析功能,为容器化 Java 应用提供了从进程级到系统级的立体化诊断能力,帮助开发者精准定位内存异常根源,有效避免 OOM 事件的发生。

相关链接:

[1]《一次内存诊断,让资源利用率提升 40%:揭秘隐式内存治理》

[2] 云监控-ECS 洞察-SysOM 系统诊断

https://cmsnext.console.aliyun.com/next/region/cn-shanghai/workspace/default-cms-1808078950770264-cn-shanghai/app/host/host-sysom

[3] 操作系统控制台实例纳管

https://help.aliyun.com/zh/alinux/user-guide/system-management?spm=a2c4g.11186623.help-menu-2632541.d_2_0_4.14ef243dMTjYF1&scm=20140722.H_2851198._.OR_help-T_cn~zh-V_1#7895eb3dedfty

[4] 操作系统控制台 Java 内存诊断

https://help.aliyun.com/zh/alinux/user-guide/java-memory-diagnostics?spm=a2c4g.11186623.help-menu-2632541.d_2_0_1_0_0_2.2fd8243d1slu08&scm=20140722.H_2979954._.OR_help-T_cn~zh-V_1

[5] 操作系统控制台热点追踪

https://help.aliyun.com/zh/alinux/user-guide/process-hotspot-tracking

[6] 操作系统控制台热点对比分析

https://help.aliyun.com/zh/alinux/user-guide/hot-spot-comparative-analysis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/995011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞橙教育 联系方式: 业务咨询前的渠道验证与注意事项汇总

一、官方联系方式 根据公开信息整理,飞橙教育目前公布的区域咨询电话如下。建议用户在拨打前确认号码时效性,并通过多渠道交叉验证。 北京地区电话:13331132678 河北及沧州地区电话:13303176883 其他官方联络渠道如…

北京专注婚姻家事的律所:服务特点与业务细分观察

在社会生活中,婚姻家事法律事务涉及家庭关系的核心权益,包括财产分割、子女抚养、继承等多个方面,其复杂性和专业性要求当事人寻求具备深厚领域经验的法律服务支持。北京作为法律服务资源集中的地区,专注于婚姻家事…

openstack基础——各组件交互过程总结

1、在Horizon/Cli输入账号和密码,并发送至keystone进行鉴权 2、keystone返回token,并进入openstack首页 3、客户端创建发送虚拟机的请求,找keystone鉴权 4、通过nova-api发送请求并记录至DB中 5、记录完成后nova-ap…

propertygrid同时显示numericupdown和slider

效果在C# WinForms中,让PropertyGrid同时显示NumericUpDown和Slider控件来编辑同一个数值属性,可以通过自定义UITypeEditor来实现。下面是一个完整的解决方案。 🎯 实现思路概述方法核心思路适用场景优点自定义UIT…

飞橙教育 联系方式: 企业短视频营销培训服务选择注意事项提醒

一、官方联系方式 飞橙教育目前公开的 regional 联系方式如下,建议在工作日标准工作时间进行咨询。 北京地区电话:13331132678 河北及沧州地区电话:13303176883 需要说明的是,以上信息为当前公开渠道可查询到的直接…

U-Mail或成为国内邮件服务器软件行业专业品牌 - U

随着企业信息化建设的重视程度不断提高,企业邮箱不仅仅只是被当做企业员工内外沟通的工具,越来越多的企业也会将企业邮箱与其他管理系统相结合,从而实现一体化管理。由于租用企业邮箱无法满足企业的业务需求,因此,…

量子计算研究突破:13篇顶会论文深度解析

文章重点介绍了一项量子计算领域的重要研究进展,涉及量子纠错与容错、量子算法与应用、量子计量与通信三大技术方向,详细阐述了相关技术架构与理论突破,例如表面码、量子态蒸馏、浅层量子电路模拟及量子通信策略等。…

2025 年 12 月钢管厂家权威推荐榜:焊接/镀锌/精密/不锈钢/冷拔钢管,汽车油路/高压油路/液压油缸专用管材实力甄选

2025 年 12 月钢管厂家权威推荐榜:焊接/镀锌/精密/不锈钢/冷拔钢管,汽车油路/高压油路/液压油缸专用管材实力甄选 在工业制造、建筑工程、能源输送及高端装备制造领域,钢管作为基础且关键的原材料,其性能与质量直接…

2025年热门的无极绳绞车压绳轮组厂家最新实力排行

2025年热门的无极绳绞车压绳轮组厂家实力排行行业背景与市场趋势随着矿山开采、隧道建设等工程领域的快速发展,无极绳绞车作为重要的牵引设备,其市场需求持续增长。压绳轮组作为无极绳绞车的关键部件,直接影响设备运…

北京知名家事律所排名:聚焦婚姻家事法律服务机构参考

在社会经济发展与家庭结构变化的背景下,婚姻家事法律需求日益多元化,涉及离婚纠纷、财产分割、继承析产等复杂问题时,专业的法律服务机构成为许多家庭的重要选择。北京作为法律服务资源集中地,拥有众多专注于家事领…

油头细软塌救星:2025 控油去屑洗发水排行榜,洗后清爽不扁塌

一、控油去屑洗发水的选购核心与测评逻辑 挑选控油去屑洗发水,需紧紧围绕 “控油持久度、去屑安全性、温和修护力” 三大核心要点,切勿被 “速效去屑”“强力控油” 等虚假宣传迷惑。国家药品监督管理局《化妆品安全…

(最新)2026有哪些好用的降ai率工具?亲测5个靠谱平台,这个真能把AI率降下去!

2026年的学术圈,AIGC检测已经成了每个毕业生必须面对的“终极关卡”。就在上个月,我亲身经历了从AI率72%降到7%的惊险历程,几乎把市面上的降AI工具试了个遍。今天就把我最推荐的5个靠谱平台分享给大家,希望能帮你们…

2025 清淤机器人厂家 TOP10 推荐:智能科技破解行业痛点,这些品牌值得关注

随着城市化进程加快和环保要求升级,地下管网、工业水池等场景的清淤需求日益迫切。传统人工清淤不仅效率低下,还面临有毒有害气体、坍塌等安全风险,智能清淤机器人凭借高效、安全、环保的优势,逐渐成为行业主流选择…

东城区婚姻律师事务所推荐:本地婚姻家事法律服务机构盘点

在社会关系日益复杂的当下,婚姻家事领域的法律需求逐渐呈现专业化、精细化特点。东城区作为北京核心区域,聚集了多家专注于婚姻家事业务的律师事务所,为当事人提供离婚纠纷、财产分割、子女抚养权等多方面的法律服务…

改善免疫力的灵芝推荐几款,这些品牌口碑之选

灵芝作为传统滋补品,在提升免疫力方面一直受到关注。随着健康意识的提升,市场上涌现出多个专注于灵芝产品的品牌,它们在原料甄选、工艺技术和品质把控上各有特色。以下结合品牌背景、产品特点及用户反馈,为大家分享…

火狐安装未签名的离线扩展

Firefox 要求大多数附加组件程序在安装前必须经过 Mozilla 的数字签名验证。这一流程有助于保护用户免受可能劫持浏览器、窃取信息或植入垃圾广告的恶意附加组件侵害。[1] 安装未签名附加组件会怎样Firefox 会阻止未签…

能提高免疫力的灵芝品牌哪家好?品质之选推荐

灵芝作为传统滋补品,其在增强免疫力方面的作用一直受到人们的关注。在选择能提高免疫力的灵芝品牌时,产品的原料品质、生产工艺以及品牌的信誉度都是需要重点考虑的因素。下面为大家介绍几个在灵芝领域表现较为突出的…

业内推荐!2025年河北十大双片钉箱机厂家口碑排行榜,头部双片钉箱机怎么选择精选优质品牌解析

在包装行业智能化、高效化转型的浪潮中,双片钉箱机作为纸箱成型的关键印后设备,其性能与稳定性直接关系到企业的生产效率和包装质量。河北,尤其是东光地区,作为国内重要的包装机械产业聚集地,孕育了一批技术扎实、…

2025年广东快思聪4k分布式编码器服务权威推荐榜单:快思聪4k编码器/快思聪编码器/快思聪分布式4k编码器服务商精选

在信息技术高速发展的今天,4K分布式坐席系统已成为大型企业指挥中心、广电演播、智慧城市运营及高端会议等领域实现音视频资源高效调度与集中管控的核心神经中枢。这类系统能将分布在不同地理位置的各类信号源(如4K摄…

寻找海外名义雇主EOR公司?2025年聚焦全球雇佣解决方案与主流服务商优势

在全球化加速推进的今天,越来越多中国企业将目光投向海外市场,寻求新的增长点。然而,跨国用工涉及复杂的劳动法、税务制度、社保政策和文化差异,稍有不慎便可能引发合规风险。为此,海外名义雇主(EOR)服务商成为…