主要观点总结
文章主要讲述了一次K8s集群升级后部分Java应用出现OOMKilled问题,排查后发现是由于JVM对资源认知的偏差,根源在于新操作系统Ubuntu 22.04默认启用了cgroup v2导致的兼容性问题。文章提供了终极解决方案和结语。
关键观点总结
关键观点1: 部分Java应用在K8s集群升级后出现OOMKilled问题。
升级了更高版本的K8s和操作系统Ubuntu 22.04后,部分Java应用遭遇OOMKilled问题,内存限制从2Gi加到8Gi才勉强恢复,但资源消耗异常飙升,还有神秘的磁盘写入问题。
关键观点2: JVM对资源的认知偏差是问题的关键。
JVM完全无视了Pod的资源限制,以为自己运行在一个拥有海量CPU和内存的主机上,因此分配了过多的资源,导致OOMKilled。
关键观点3: cgroup v2的兼容性问题。
JVM无法正确识别cgroup v2的资源限制是因为许多旧版或未更新的Java运行时和依赖库没有适应cgroup v2的变化。
关键观点4: 提供了两种解决方案。
方案一是升级Java运行时和关键依赖库以支持cgroup v2;方案二是暂时回退到cgroup v1以保证兼容性。同时讨论了操作系统选型和优化的注意事项。
免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。
原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过
【版权申诉通道】联系我们处理。