标签: oom

这些消息暗示了什么(Linux内核转储,似乎OOM)?

我从系统日志 (/var/log/messages) 中得到以下错误。他们表示什么?以及如何解决它们?

Sep 30 05:19:35 node23 kernel: Mem-info:
Sep 30 05:19:35 node23 kernel: Node 0 DMA per-cpu:
Sep 30 05:19:35 node23 kernel: cpu 0 hot: high 0, batch 1 used:0
Sep 30 05:19:35 node23 kernel: cpu 0 cold: high 0, batch 1 used:0
Sep 30 05:19:35 node23 kernel: cpu 1 hot: high 0, batch 1 used:0
Sep 30 05:19:35 node23 kernel: cpu 1 cold: high 0, batch 1 used:0
Sep 30 05:19:35 node23 kernel: cpu 2 hot: high 0, …
Run Code Online (Sandbox Code Playgroud)

linux centos kernel oom

5
推荐指数
1
解决办法
2万
查看次数

Linux 上怎么可能出现 OOM 场景(OOM 杀手背后的启发式方法)?

我知道虚拟内存的概念。通过按需分页(取决于 vm.overcommit_memory),您可以分配比可用 RAM 更多的内存。除非您“触摸”页面,否则什么都不会发生。否则我猜有一个页面错误,然后物理内存被用于页面框架。但这在某种程度上意味着,如果系统内存紧张,它只会调出最近使用的内容并正常工作。

怎么可能需要终止一个进程呢?发生这种情况是因为 mlock() 处理了太多内存吗?垃圾过多后是否会调用 OOM?或者换个角度问:触发 OOM 杀手背后的启发到底是什么?

我读到您可以执行“echo 1 > memory.oom_control”或“echo -17 > /proc/PID/oom_adj”来禁用它。这意味着什么?机器可能会在一段时间内完全没有响应。但是,如果以某种方式,有问题的进程检测到它没有取得进展,它也可能暂时停止消耗内存(那么快),最终一切都应该重新开始工作,还是我错了?

在我的场景中,只有一个进程(具有巨大的内存缓存)。当然,该数据不是持久的,但我仍然不想重新启动该过程(并重新加载该数据)。

linux oom

5
推荐指数
1
解决办法
1503
查看次数

apache httpd 进程被内核 oom 杀死

一些 apache httpd 进程的内存和 cpu 使用率过高,被内核杀死,但我不知道为什么 httpd 使用这么多内存。我需要一些方法来分析或一些方法来重现。

关于 apache 和 syslog 的一些消息

Server version: Apache/2.2.34 (Unix)
Server built:   Aug 17 2017 15:49:40
Run Code Online (Sandbox Code Playgroud)

系统日志消息

Oct 19 15:28:20 kernel: httpd invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0, oom_score_adj=0

Oct 19 15:28:20  kernel: httpd cpuset=/ mems_allowed=0-1

Oct 19 15:28:20  kernel: Pid: 7446, comm: httpd Not tainted 2.6.32_1-12-0-0 #1

Oct 19 15:28:20  kernel: Call Trace:

Oct 19 15:28:20  kernel:  [<ffffffff8108acf6>] ? dump_header+0x7c/0x187

Oct 19 15:28:20  kernel:  [<ffffffff8108b24b>] ? oom_kill_process+0x6c/0x17b

Oct 19 15:28:20  kernel:  [<ffffffff8108b784>] ? …
Run Code Online (Sandbox Code Playgroud)

oom apache-2.2

5
推荐指数
1
解决办法
904
查看次数

如何找到导致OOM的cgroup?

我正在使用 cgroup 对我的进程进行分区,并且在我的内核日志中收到 Out Of Memory 消息。

但是,我找不到导致它们的分区。我检查了内存控制器 cgroup,但没有明显的使用方法。

问题是,当我在系统日志中看到“任务被杀死”消息时,任务已经死亡,它的 /proc 条目消失了,cgroup 的任务文件没有被杀死任务的 pid。

linux oom cgroup

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

找出瓶颈的技术是什么?

我在 Digital Ocean 上为最小的 Droplet 设置了一个 WordPress 几个月。

最近,我的博客疯传(1000+ facebook 分享),服务器需要 50 多秒才能响应。(Google Analytics 显示今天几乎一整天都有大约 40 人同时访问我的博客。)

我询问 Digital Ocean 支持团队,他们告诉我我的 512 MB RAM 太小了。

但我使用“free -m”并看到

             total       used       free     shared    buffers     cached
Mem:           490        465         24         64         94        136
-/+ buffers/cache:        234        256
Swap:          999          0        999
Run Code Online (Sandbox Code Playgroud)

所以我认为我有 256 MB 可用内存?

我告诉他们,他们说“虽然它可能显示 100MB 的可用内存,但这可能只是在它终止了一些服务以节省内存之后。”

但我使用“顶部”并看到

%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
Run Code Online (Sandbox Code Playgroud)

我发现CPU保持在92~100% id,所以我认为我的CPU不忙。

那么如何才能找到瓶颈呢?

我想在支付更多升级费用之前知道瓶颈是什么。

linux wordpress memory-usage oom

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

内存足够但调用了 OOM 杀手?

我的老朋友OOM杀手来拜访我已经有很长时间了。现在它每周来一次,我无法弄清楚它为什么被触发。似乎我没有失去记忆。是什么导致了这种情况,可以采取哪些措施来防止这种情况发生?

内核:3.13.0-49-generic #83-Ubuntu SMP

就在 OOM 杀手被触发之前:

Fri Nov 16 01:45:01 EST 2018                                                                                                  
COMMAND         %MEM                                                                                                          
mysqld          17.2                                                                                                          
apache2          7.2                                                                                                          
spamd child      7.0                                                                                                          
apache2          7.0                                                                                                          
apache2          6.9                                                                                                          
apache2          6.8                                                                                                          
apache2          6.8                                                                                                          
apache2          6.6                                                                                                          
apache2          6.6                                                                                                          
apache2          6.4                                                                                                          
apache2          6.4                                                                                                          
/usr/sbin/spamd  6.4                                                                                                          
spamd child      6.2                                                                                                          
apache2          5.6                                                                                                          
opendkim         0.6                                                                                                          
horde-alarms     0.5                                                                                                          
fail2ban-server  0.5                                                                                                          
apache2          0.4                                                                                                          
munin-node       0.2                                                                                                          
pickup           0.1                                                                                                          
cron             0.1                                                                                                          
cron             0.1                                                                                                          
cron             0.1                                                                                                          
mem.sh           0.1                                                                                                          
init             0.1                                                                                                          
ps               0.1                                                                                                          
config           0.0                                                                                                          
tlsmgr           0.0         
ntpd             0.0                                                                                                          
qmgr             0.0                                                                                                          
sh               0.0                                                                                                          
sh …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu bash oom

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

尽管有足够的可用内存,但 Linux OOM 杀手仍在发挥作用

大约每周一次,OOM-killer 会在我的服务器中关闭一个 postgres 进程,尽管“免费”状态它有足够的可用内存。

我在这里和那里阅读了几个线程,但看不到任何真正的解释。难道真的是因为服务器现在已经掉呢?它是(Ubuntu)内核错误吗?

并且先发制人,是的,也许我会添加交换。但是就没有其他的解决办法了吗?或者至少解释一下?:)

服务器:物理戴尔
内存:64GB RAM 和 0 Swap
uname:Linux 服务器名称 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Postgres 版本:9.5.10(8GB 共享内存)
vm.overcommit_memory = 0

free -m在最后一次杀戮之前的输出

              可用的免费共享 buff/缓存总数
电话:64312 2666 450 8699 61196 52126
交换:0 0 0

上次杀死的内核日志

6 月 19 日 21:29:49 服务器名称内核:[17009377.877956] bash 调用 oom-killer:gfp_mask=0x26000c0,order=2,oom_score_adj=0
6 月 19 日 21:29:49 服务器名称内核:[17009377.877959] bash cpuset=/ mems_allowed=0-1
6 月 19 日 21:29:49 服务器名称内核:[17009377.877964] CPU:23 PID:61771 通讯:bash 未受污染 4.4.0-62-generic #83-Ubuntu …

postgresql linux memory virtual-memory oom

3
推荐指数
1
解决办法
2073
查看次数

我无法解释的 oom 杀手

当我看到有足够的内存可用时,我无法理解为什么内核会发出这个 oom 杀手:

我看后说有足够的可用内存

普通的

DMA

普通自由行

这是一个基于 NAND 闪存的嵌入式设备,具有 256 MB RAM

内核:2.6.31

 myshellscript invoked oom-killer: gfp_mask=0xd0, order=2, oomkilladj=0 
 Backtrace: 
 [<c0106494>] (dump_backtrace+0x0/0x110) from [<c03641a0>] (dump_stack+0x18/0x1c) 
 r6:000000d0 r5:c9040c60 r4:00000002 r3:c0448690 
 [<c0364188>] (dump_stack+0x0/0x1c) from [<c015a314>] (oom_kill_process.clone.11+0x60/0x1b4) 
 [<c015a2b4>] (oom_kill_process.clone.11+0x0/0x1b4) from [<c015a738>] (__out_of_memory+0x154/0x178) 
 r8:c21e86e0 r7:001fb000 r6:00000002 r5:000000d0 r4:c9b6e000 
 [<c015a5e4>] (__out_of_memory+0x0/0x178) from [<c015a980>] (out_of_memory+0x68/0xa0) 
 [<c015a918>] (out_of_memory+0x0/0xa0) from [<c015d230>] (__alloc_pages_nodemask+0x42c/0x520) 
 r5:00000002 r4:000000d0 
 [<c015ce04>] (__alloc_pages_nodemask+0x0/0x520) from [<c015d388>] (__get_free_pages+0x18/0x44) 
 [<c015d370>] (__get_free_pages+0x0/0x44) from [<c0109418>] (get_pgd_slow+0x1c/0xe0) 
 [<c01093fc>] (get_pgd_slow+0x0/0xe0) from [<c0129ab0>] (mm_init.clone.43+0xb0/0xf0) 
 r7:c90858c0 r6:00000000 r5:c90858c0 r4:ce1a6680 
 [<c0129a00>] (mm_init.clone.43+0x0/0xf0) from [<c0129c40>] …
Run Code Online (Sandbox Code Playgroud)

linux memory kernel linux-kernel oom

2
推荐指数
1
解决办法
6715
查看次数

内存不足的 NFS 服务器

我有多台机器通过 6-10 个用户使用的 NFS 共享共享主目录。所有机器都用于运行计算实验,包括带有 NFS 服务器的机器。虽然这种情况非常罕见,但有可能某些实验可能会导致内存不足 (OOM) 问题。虽然用户进程可能会在某个时间点被杀死,但我想知道它如何影响 NFS 服务器从而反过来影响其他机器。我尝试搜索它,但找不到具体的答案。还有我可以采取什么措施来避免 OOM 影响 NFS 共享?

NFS 服务器配置:Intel Core i7-9700、32 GB RAM、SWAP 32 GB 和 Graphics TITAN RTX 其他机器也有类似的配置。

linux ubuntu nfs home-directory oom

2
推荐指数
2
解决办法
1487
查看次数

如何让 OOM Killer 更加被动

我能够使用旧的 2.6.x 内核在 VPS 上编译具有 1 GiB RAM 的程序。但是当我尝试在具有 1.1 GiB RAM 和 3.9.x 内核的 VPS 上编译它时,编译器总是被 OOM Killer 杀死。

如何让 OOM 更被动?

kernel oom

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