加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker如何处理OOM杀手和内存限制?

发布时间:2020-12-16 03:55:42 所属栏目:安全 来源:网络整理
导读:我有一个docker容器,它通过bash脚本启动一个简单的java(基于jgroups的)应用程序. java进程通过Xmx限制128m,容器允许使用256m(禁用交换).不幸的是,我不时会面对以下OOM消息: Jul 07 02:43:54 ip-10-1-2-125 kernel: oom_kill_process: 16 callbacks suppress

我有一个docker容器,它通过bash脚本启动一个简单的java(基于jgroups的)应用程序. java进程通过Xmx限制128m,容器允许使用256m(禁用交换).不幸的是,我不时会面对以下OOM消息:

Jul 07 02:43:54 ip-10-1-2-125 kernel: oom_kill_process: 16 callbacks suppressed
Jul 07 02:43:54 ip-10-1-2-125 kernel: java invoked oom-killer: gfp_mask=0x2400040,order=0,oom_score_adj=0
Jul 07 02:43:54 ip-10-1-2-125 kernel: java cpuset=0ead341e639c2f2bd27a38666aa0834c969e8c7e6d2fb21516a2c698adce8d5f mems_allowed=0
Jul 07 02:43:54 ip-10-1-2-125 kernel: CPU: 0 PID: 26686 Comm: java Not tainted 4.4.0-28-generic #47-Ubuntu
Jul 07 02:43:54 ip-10-1-2-125 kernel: Hardware name: Xen HVM domU,BIOS 4.2.amazon 05/12/2016
Jul 07 02:43:54 ip-10-1-2-125 kernel:  0000000000000286 000000006ffe9d71 ffff8800bb3c7c88 ffffffff813eb1a3
Jul 07 02:43:54 ip-10-1-2-125 kernel:  ffff8800bb3c7d68 ffff880033aea940 ffff8800bb3c7cf8 ffffffff812094fe
Jul 07 02:43:54 ip-10-1-2-125 kernel:  000000000000258c 000000000000000a ffffffff81e66760 0000000000000206
Jul 07 02:43:54 ip-10-1-2-125 kernel: Call Trace:
Jul 07 02:43:54 ip-10-1-2-125 kernel:  [

如您所见,我的应用程序的RSS大约只有64M.但由于某些原因,cgroup的RSS为256M(包括128M的大页面).

这是一种操作系统缓存吗?如果是这样,为什么OOM在杀死用户的应用程序之前不会刷新它们?

最佳答案
哦!看起来我忘了发布答案.

上面的问题是我的java进程,它与docker无关.我错误地认为OOM报告以Kbytes打印RSS.这是错的 – OOM报告打印的页面数量通常为每个4K.

就我而言,pid 26675为RSS获取64577页,等于(64577 * 4K)258’308 KBytes.添加2个bash进程为我们提供了当前CGroup的限制 – 262144kB.

因此,进一步的分析必须在JVM字段中:堆/元空间分析,本机内存跟踪,线程等……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读