相关疑难解决方法(0)

即使有足够的可用内存,Linux 进程也会被杀死

我正在调查为什么我们的两个进程被 Linux OOM 杀手杀死 - 尽管似乎有足够的 RAM 和大量可用的 SWAP。

当我通过这个答案解释它时,第一个内存请求要求 2^2=4 页(16KB)的内存(顺序标志)并希望它来自“正常”区域。

Jan 27 04:26:14 kernel: [639964.652706] java invoked oom-killer: gfp_mask=0x26000c0, order=2, oom_score_adj=0
Run Code Online (Sandbox Code Playgroud)

如果我正确解析输出,就会有足够的空间:

Node 0 Normal free:178144kB min:55068kB low:68832kB high:82600kB 
Run Code Online (Sandbox Code Playgroud)

几分钟后第二次有同样的请求——而且似乎也有足够的可用空间。

为什么当时触发了OOM杀手?我解析的信息有误吗?

  • 系统是 14.04 Ubuntu,带有 4.4.0-59 x64 内核
  • vm.overcommit_memory设置设置为“0”(启发式),这可能不是最佳的。

实例一:

Jan 27 04:26:14 kernel: [639964.652706] java invoked oom-killer: gfp_mask=0x26000c0, order=2, oom_score_adj=0
Jan 27 04:26:14 kernel: [639964.652711] java cpuset=/ mems_allowed=0
Jan 27 04:26:14 kernel: [639964.652716] CPU: 5 PID: 2152 Comm: java Not tainted 4.4.0-59-generic …
Run Code Online (Sandbox Code Playgroud)

linux oom

9
推荐指数
1
解决办法
6726
查看次数

解释神秘的内核“页面分配失败”消息

我有一个运行名为 ABC 的应用程序的多用户 CentOS 6.1 数据库系统。服务器为 64 位、8GB RAM 和 6 个 vCPU(在 VMWare ESXi 4 上)。我们经常转储到 dmesg 和系统日志中,详细说明内核页面分配失败。

在这种情况下,这些消息意味着什么?我们该如何补救?

Feb  5 08:10:52 Fruity kernel: ABC: page allocation failure. order:1, mode:0x20
Feb  5 08:10:52 Fruity kernel: Pid: 23588, comm: ABC Not tainted 2.6.32-131.17.1.el6.x86_64 #1
Feb  5 08:10:52 Fruity kernel: Call Trace:
Feb  5 08:10:52 Fruity kernel: <IRQ>  [<ffffffff8112016e>] ? __alloc_pages_nodemask+0x71e/0x8b0
Feb  5 08:10:52 Fruity kernel: [<ffffffff81159a52>] ? kmem_getpages+0x62/0x170
Feb  5 08:10:52 Fruity kernel: [<ffffffff8115a66a>] ? fallback_alloc+0x1ba/0x270
Feb  5 08:10:52 Fruity …
Run Code Online (Sandbox Code Playgroud)

kernel centos6 rhel6

7
推荐指数
1
解决办法
8119
查看次数

使用 atop 对 oom-killer 进行故障排除:它是否已修复?

我有一个带有 4GB 内存、2GB 交换和 2 个 CPU 的 Debian 系统。我遇到了许多涉及 oom-killer 的系统故障。系统将在一分钟内正常工作,下一分钟将无法操作,控制台上会显示大量 oom-killer 消息。我已经两次添加了 1GB 的 RAM。 5

令我感到困惑的是,我使用 xymon 监控系统,并且没有提前收到任何警告。我有 CPU、网络和 ram 利用率的图表,但我没有看到其中任何一个表明存在问题的大“尖峰”。我会发布它们,但目前没有足够的声誉。

我发现了6。我也通过vmcom和vmlim得到一条红线。我/proc/sys/vm/overcommit_ratio从50改为90,红线消失了。如您所见,我有 500MB 可用内存、2GB 可用交换空间、1.2G 缓存。

我解决了问题,还是告诉 atop/linux 忽略它?

我想要一个稳定的系统。展望未来,我应该:

  1. 向下调整 Apache、Sendmail 等的最大子参数?使用ulimit?
  2. 调整 oom-killer sysctl 值以让我利用所有可用的内存和交换?
  3. 调整 swappiness 或其他内核值?

我正在寻找更好的方法来计算上述问题的答案。

谢谢。

ATOP输出

ATOP - www1               2013/06/20  10:32:14               10 seconds elapsed
PRC | sys   1.34s | user   7.48s | #proc    347 | #zombie    2 | #exit     53 |
CPU | sys     11% …
Run Code Online (Sandbox Code Playgroud)

linux debian oom-killer

4
推荐指数
1
解决办法
2258
查看次数

标签 统计

linux ×2

centos6 ×1

debian ×1

kernel ×1

oom ×1

oom-killer ×1

rhel6 ×1