JVM调优实战--容器内应用内存溢出被杀死

本文介绍了作者在生产环境中遇到的JVM内存溢出问题,即容器应用因oom killed exit code 137而被终止。通过调整JVM参数,如使用-XX:+UnlockExperimentalVMOptions, -XX:+UseCGroupMemoryLimitForHeap和-XX:MaxRAMPercentage,来使JVM感知容器内存限制,并避免堆外内存导致的溢出。此外,文章还探讨了JVM内存分配和容器内存限制之间的关系,以及如何生成heapdump进行问题排查。" 109186493,7950075,Pandas忽略首行首列写入CSV,"['pandas', '数据分析', 'csv处理']
摘要由CSDN通过智能技术生成

威哥评:这篇文章是我的小伙伴hwang根据他在production环境遇到的实际问题整理的,简单来说就是让JVM听你的话,说内存多大就多大。说实话,hwang这篇文章给我了一个小小的惊喜,他的文笔真是不错,很生动的技术文章。

所谓的容器应用内存溢出被杀死,即为oom(out of memory) killed exit code 137。

初次遭遇
相信玩java容器化部署的朋友肯定遇到过oom killed exit code 137,解决方案很多,糙快猛的就重启或者直接docker run --restart=always。去年第一次遇到的时候,哈哈,是秀一下自己还知道点jvm调优的时候了:

docker run … JAVA_OPTS=“-server -Xmx1024m”
顺道还长了点其它知识,

docker run … --memory1300MJAVA_OPTS=“-server -Xmx1024m”
容器的内存要大于Xmx内存,此前有不知道的同学配置失误导致启动失败,宣导之。以为从此可以高枕无忧了。

服务又挂了
岂料,好景仅半年,近日频遭下游业务方投诉,你们的服务又双叒叕不能用了!去现场扫了一眼,oom killed exit code 137。太好了,又可以jvm调优了。于是再给配上heapdump

docker run … --memory1300MJAVA_OPTS=“-server -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/”
服务很配合的一两天就又挂了。再去现场,咦,我的heapdump呢?为什么日志文件夹下除

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值