解决 k8s 限制内存后 还出现 OOM 错误的问题:资源整合
如果应用所使用的 java 版本在 8及8以下, JVM 在没有认为设定 Xmx Xms 时, 会根据 宿主机的内存进行 JVM 的参数设置,这样就会导致很大的问题。
比如,如果你的宿主机内存在 8G, 你的容器设置为 1G,那么 JVM 根据你的宿主机内存,给到你应用 2G左右的堆内存,此时 JVM 会按照 2G 进行 GC,此时会出现 OOM ,而导致容器被 kill 的情况。
这一情况在此篇博客中有详细探讨:
《Kubernetes之路 1 - Java应用资源限制的迷思》
https://blog.csdn.net/maoreyou/article/details/80134303
解决办法有三种:
一、 手动指定 应用启动时的 JVM 参数:
JVM的参数指定可以参考这几篇文章:
1、 根据这篇中的参数进行初步设定
《关于JVM突破Docker内存限制的解决方案及JVM推荐配置》
https://blog.csdn.net/cy_7030/article/details/81536590
2、 根据这篇中的 JVM 参数调优方法,参考实际应用,重新调整 JVM 值:
《JVM内存设置多大合适?Xmx和Xmn如何设置?》
https://www.cnblogs.com/zhangfengshi/p/11343102.html
《JVM 调优总结》
https://www.cnblogs.com/diegodu/p/9849611.html
《 jstat命令查看jvm的GC情况 (以Linux为例)》
https://www.cnblogs.com/yjd_hycf_space/p/7755633.html
《jvm 性能调优工具之 jmap》
https://www.jianshu.com/p/a4ad53179df3
还需要注意: 如果你的 Docker 中启动 java 使用的是 sh 而非 /bin/bash ,java进程的 pid 是1,
会导致:
Unable to get pid of LinuxThreads manager thread
通过使用 /bin/bash 启动可以解决:
《jstack on alpine:Unable to get pid of LinuxThreads manager thread》
https://blog.csdn.net/xianzi1261618338/article/details/83382989
二、 使用 java9 及以上版本,使用 容器资源感知特性:
java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap …
三、 使用这位大神制作的 tomcat 8 自动感知 CGroup 的镜像:
参考:
《如何设置Docker容器中Java应用的内存限制》
https://yq.aliyun.com/articles/18037
解决 k8s 限制内存后 还出现 OOM 错误的问题:资源整合相关推荐
- 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法
问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一 ...
- 解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题
解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题 参考文章: (1)解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题 (2)https://www.cnblogs.co ...
- Android 内存溢出解决方案(OOM)
众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定).因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片.音频文 ...
- Android加载图片OOM错误解决方式
前几天做项目的时候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上显示高分辨率的大图片. SQLITE採用BOLD方式存储图片,这个存取过程就不说了哈,网上一 ...
- 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致了上千万损失)
由于此文涉及内容较多,且malloc和free的流程图太大,导致被压缩,需要本文pdf或者高清 原图的,请关注公众号[高性能架构探索],也可以后台回复[pdf],获取计算机必备经典书籍 前言 大家好, ...
- 解决0X000000该内存不能为read 的方法
当我们正在使用IE6.0或者是7.0,升级到了8.0.突然间我们的IE浏览器打开的时候会出现下面 这个时候不管是我们修改注册表还是重启都不能解决问题 我们不要着急这是因为我们升级的时候新的IE8会有漏 ...
- chrome 占用大量内存直到网页崩溃_Chrome吃内存太夸张!几招解决Chrome占内存硬伤...
我们知道Chrome是非常出色的浏览器,无论从性能还是功能的角度来看,都是如此.但是Chrome在内存占用方面的表现,就很令人头疼了!常常听到有朋友抱怨,想要上网找找素材,不一会儿发现Chrome已经 ...
- weblogic进程自动关闭_手机内存不够还卡顿,那是你不会清理,关闭这3个设置就变流畅...
文章原创,请勿肆意抄袭.转载.搬运 市场上有数百款不同的手机,每个人选择手机的角度都是不同的.有人喜欢颜值高的,有看重品牌的,还有处理器.内存.价格等等都是决定购买手机的重要因素. 到底哪一个最重要呢 ...
- win8 计算机内存不足怎么办,如何解决Win8电脑内存不足的问题?
Win8系统全新的界面及多样的功能,越来越多的用户开始选择使用Win8系统.不过,最近却有不少Win8用户反映自己的电脑明明内存够用,但系统总是提示电脑内存不足,这该怎么办?如何解决这样的问题呢?现在 ...
最新文章
- 《C++primer》第一章--开始
- php递归函数return会出现无法正确返回想要值的情况
- [深度学习] 自然语言处理---Transformer实现(二)
- kettle增加字段报错_【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中
- vagrant使用_使用Vagrant的初学者指南
- Quality Assurance (QA)
- netbeans 添加gif图片_告别PC 用手机完成各种GIF动画编辑
- MVP 在项目中的最佳实战(封装篇)
- android 动画x轴旋转,android – 动画在视图之间转换,在z轴上旋转...
- 性能调试工具——oprofile
- 考研日语线上笔记(一):考研日语203大纲陌生、易混词汇本
- LaTeX 下载及命令行
- elixer学习笔记
- Android 指定宽高的ViewGroup
- Android 线程 Damo
- 1469: 数星星(结构体专题)
- 猪悟能淘宝店商品下载专家 v1.2
- HTML学习笔记_常用标签的使用及注意事项
- 财务欺诈研究中常用的违规类型
- 中高级iOS大厂面试宝典,进厂率80%,金三银四将是你的新起点