前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事;
在这之前我也没怎么在意过这个问题,正好这次排查分析的过程做一个记录。
首先我查看了监控面板里的 Pod 监控:
(资料图片仅供参考)
发现确实是快满了,而此时去查看应用的 JVM 占用情况却只有30%左右;说明并不是应用内存满了导致 JVM 的 OOM,而是 Pod 的内存满了,导致 Pod 的内存溢出,从而被 k8s 杀掉了。
而k8s为了维持应用的副本数量就得重启一个 Pod,所以看起来就是应用运行一段时间后就被重启。
而这个应用配置的是 JVM 8G,容器申请的内存是16G,所以 Pod 的内存占用看起来也就 50% 左右。
容器的原理在解决这个问题之前还是先简单了解下容器的运行原理,因为在 k8s 中所有的应用都是运行在容器中的,而容器本质上也是运行在宿主机上的一个个经常而已。
但我们使用 Docker 的时候会感觉每个容器启动的应用之间互不干扰,从文件系统、网络、CPU、内存这些都能完全隔离开来,就像两个运行在不同的服务器中的应用。
其实这一点也不是啥黑科技,Linux 早就支持 2.6.x 的版本就已经支持namespace隔离了,使用namespace可以将两个进程完全隔离。
仅仅将资源隔离还不够,还需要限制对资源的使用,比如 CPU、内存、磁盘、带宽这些也得做限制;这点也可以使用cgroups进行配置。
它可以限制某个进程的资源,比如宿主机是 4 核 CPU,8G 内存,为了保护其他容器,必须给这个容器配置使用上限:1核 CPU,2G内存。
这张图就很清晰的表示了namespace和cgroups在容器技术中的作用,简单来说就是:
namespace 负责隔离cgroups 负责限制在 k8s 中也有对应的提现:
resources: requests: memory: 1024Mi cpu: 0.1 limits: memory: 1024Mi cpu: 4这个资源清单表示该应用至少需要为一个容器分配一个 0.1 核和 1024M 的资源,CPU 的最高上限为 4 个核心。
不同的OOM回到本次的问题,可以确认是容器发生了 OOM 从而导致被 k8s 重启,这也是我们配置 limits 的作用。
k8s 内存溢出导致容器退出会出现 exit code 137 的一个 event 日志。
因为该应用的 JVM 内存配置和容器的配置大小是一样的,都是8GB,但 Java 应用还有一些非 JVM 管理的内存,比如堆外内存之类的,这样很容易就导致容器内存大小超过了限制的 8G 了,也就导致了容器内存溢出。
云原生背景的优化因为这个应用本身使用的内存不多,所以建议将堆内存限制到 4GB,这样就避免了容器内存超限,从而解决了问题。
当然之后我们也会在应用配置栏里加上建议:推荐 JVM 的配置小于容器限制的 2/3,预留一些内存。
其实本质上还是开发模式没有转变过来,以传统的 Java 应用开发模式甚至都不会去了解容器的内存大小,因为以前大家的应用都是部署在一个内存较大的虚拟机上,所以感知不到容器内存的限制。
从而误以为将两者画了等号,这一点可能在 Java 应用中尤为明显,毕竟多了一个 JVM;甚至在老版本的 JDK 中如果没有设置堆内存大小,无法感知到容器的内存限制,从而自动生成的 Xmx 大于了容器的内存大小,以致于 OOM。
背景前段时间业务研发反馈说是他的应用内存使用率很高,导致频繁的重启,让我排查下是怎么回事;在这之前我
【元力股份:市场若提出更大需求时会考虑新的产能扩大方案】元力股份在机构调研时表示,公司活性炭、硅酸钠
当前正值春耕春播关键阶段,保障好化肥供应事关农业生产和粮食安全大局。19日,在国家发改委4月例行新闻发
1、武当拳发源于道教圣地武当山,在中国传统武术流派上称内家拳,是中国武术一大名宗。2、为了弘扬武当武术
下拉到文末阅读原文,下载年会通知及回执丨来源:中国乳制品工业协会丨本期编辑:刘璐丨校读:封斌丨监制:
1、措施费内容:1 环境保护环境保护费=直接工程费×环境保护费费率(%)2 文明施工文明施工费=直接工程费×文
1、新宇宙侠界限是游戏王卡片之一。2、动画《游戏王GX》主角游城十代使用的卡片。3、「TACTICALEV
正所谓“无巧不成书”,前几天我们同事涓子在拍一款新车的时候不小心被电吸门夹伤了手指,没想到刚好碰...
24999元起!九号电动E300P极速达135km h首发预定破2700台
今天来聊聊关于幼儿园秘密,幼秘密ed2k的文章,现在就为大家来简单介绍下幼儿园秘密,幼秘密ed2k,希望对各
1、手机会给你发吧在邮箱里可以找到的在邮箱里可以找到申诉编号是你找回时给的一个号码,通过号码来查询你
Z世代年轻人以潮流个性为特点,汽车成为他们最佳伙伴,而林肯作为美式豪华品牌受到欢迎。本年度推出的林肯Z
独角兽股票的龙头有哪些?(2023 5 14),独角兽股票的龙头有:华西股份000936:龙头股,公司2021年净利润3
新亚强:关于调整2022年度利润分配及公积金转增股本方案的公告
1、当电流通过各种物体时,不同的物体对电流的通过有着不同的阻止能力,有的物体可使电流顺利通过,也有的
“月山路6号华宝小区楼顶太阳能热水器快掉下来了,你们赶紧过来处理下”,4月9日社区接到华宝小区居民的...
把羊肉切块儿,不用切太小,羊肉炖熟以后会缩,毕竟肉太小了吃着不过瘾。羊肉块泡冷水里,期间看到泡出血水
5月11日,在国新办举行的“权威部门话开局”系列主题新闻发布会上,国家发改委副主任、国家粮食和物资储...
针对目前健康消费领域需求多样化、个性化,代际间差异明显的发展趋势,企业应加快产品研发创新更迭,更加精
工人日报-中工网记者李国通讯员张廉 冉雨琳5月12日,重庆两江新区数字经济产业链(互联网行业)联合党委揭
利好来了!平均降价84%,每年节约260亿元!涉及这些A股公司
1、惰之心,人皆有之。2、每个人都有懒惰的心理,而这是我认识它的坏处,通过自己的行动力和意志力,用我的
新海南客户端、南海网、南国都市报5月13日消息(记者易帆)5月11日,中国、斯里兰卡与联合国粮农组织支...
北京时间5月14日00:00,意甲第35轮,斯佩齐亚主场迎战AC米兰。上半场,比赛场面较为胶着,托纳利开场阶段低
1、冷峻读音:[lěngjùn]释义:1 冷酷严峻。2、冷酷读音:[lěngkù]释义:(待人)冷淡刻薄:~无情。3、造
X 关闭
X 关闭