Tag: 不足

oom-killer杀死Docker中的java应用程序 – 报告的内存使用不匹配

我们有一个在Docker中运行的Java应用程序。 它有时会被杀手杀死,即使所有的JVM统计数据看起来都不错。 我们有几十个没有这个问题的其他应用程序。 我们的设置: 容器大小限制:480MB JVM堆栈限制:250MB JVM元数据空间限制:100MB JVM报告的各种内存统计信息(我们每10秒收集一次数据): 从容器中logging(可能稍微不按顺序,因为我们把它们全部用相同的时间戳记): java invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0 java cpuset=47cfa4d013add110d949e164c3714a148a0cd746bd53bb4bafab139bc59c1149 mems_allowed=0 CPU: 5 PID: 12963 Comm: java Tainted: G ———— T 3.10.0-514.2.2.el7.x86_64 #1 Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/14/2014 0000000000000000 0000000000000000 0000000000000046 ffffffff811842b6 ffff88010c1baf10 000000001764470e ffff88020c033cc0 ffffffff816861cc ffff88020c033d50 ffffffff81681177 ffff880809654980 0000000000000001 […]

docker守卫与容器内的malloc失败

我写了一个简短的java程序来分配内存: package com.company; import java.util.ArrayList; import java.util.List; public class Main { public static final int SIZE_NATIVE_LONG_IN_BYTE = 8; public static void main(String[] args) { Integer memoryConsumptionInMiB = Integer.parseInt(args[0]); List<long[][]> foo = new ArrayList<long[][]>(); int i = 0; while (true) { System.out.println(i++); foo.add(new long[(1024 / SIZE_NATIVE_LONG_IN_BYTE * 1024)][memoryConsumptionInMiB]); } } } 然后我尝试在一个docker容器中运行几个不同的参数: Xmx 1G和docker容器没有内存限制 Xmx 1G和docker运行-m […]

为什么java本机内存跟踪中的内存增加

我的应用程序运行在Docker容器中,它使用Scala并使用“OpenJDK 64位服务器VM(build 25.102-b14,混合模式)”,其Xmx设置为16GB,容器内存限制为24Gb,运行一些集装箱被杀的时间: Last State: Terminated Reason: OOMKilled Exit Code: 137 但是,在日志中我找不到任何“java.lang.OutOfMemoryError:Java堆空间”错误,在所有48个节点中,甚至在最近2周内都没有发现这个错误。 所以这不太可能是一个普通的堆OOM。 dmesg输出: $ dmesg -l err,crit,alert,emerg STDIN is not a terminal [1647254.978515] Memory cgroup out of memory: Kill process 10924 (java) score 1652 or sacrifice child [1647254.989138] Killed process 10924 (java) total-vm:34187148kB, anon-rss:24853120kB, file-rss:23904kB [1655749.664871] Memory cgroup out of memory: Kill process 1969 […]