Ubuntu 16.04 OOM 杀手不起作用

Ubuntu 16.04 OOM 杀手不起作用

我在服务器端经常使用 Ubuntu 14.04,当某个进程占用过多内存时,OOM-killer 就会启动。OOM-killer 会将其杀死,并在 syslog/dmesg 中记录被杀死的内容。

目前,我在笔记本上使用 Ubuntu 16.04,每次内存耗尽时,机器就会挂起。我看到磁盘工作灯一直亮着。我等了 15 分钟,但什么也没发生,所以我不得不硬重启电脑。自事件发生以来,系统日志中没有登录。

这是我的 /var/log/syslog,计算机在 12:15 左右挂起,然后我关闭它并于 13:12:54 启动。

6979 Oct 16 12:15:20 fmlug systemd[1]: Starting Network Manager Script Dispatcher Service...
6980 Oct 16 12:15:20 fmlug consul[1113]:     2017/10/16 12:15:20 [DEBUG] agent: Service 'gitea' in sync
6981 Oct 16 12:15:20 fmlug consul[1113]:     2017/10/16 12:15:20 [DEBUG] agent: Node info in sync
6982 Oct 16 12:15:22 fmlug dbus[1048]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
6983 Oct 16 12:15:22 fmlug systemd[1]: Started Network Manager Script Dispatcher Service.
6984 Oct 16 12:15:22 fmlug nm-dispatcher: req:1 'dhcp4-change' [wlan0]: new request (1 scripts)
6985 Oct 16 12:15:22 fmlug nm-dispatcher: req:1 'dhcp4-change' [wlan0]: start running ordered scripts...
6986 Oct 16 13:12:54 fmlug rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="1031" x-info="http://www.rsyslog.com"] start
6987 Oct 16 13:12:54 fmlug kernel: [    0.000000] Linux version 4.10.0-37-generic (buildd@lgw01-amd64-037) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6     ubuntu1~16.04.4) ) #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 (Ubuntu 4.10.0-37.41~16.04.1-generic 4.10.17)

有关我的系统的信息

$ uname -a; free -m; sysctl -a 2>/dev/null | grep -E 'oom|swappiness' 
Linux fmlug 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
              total        used        free      shared  buff/cache   available
Mem:           3855        1559         609         144        1685        1819
Swap:             0           0           0
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 1
vm.panic_on_oom = 0
vm.swappiness = 60

我以为这可能是由交换引起的,但实际上我没有为计算机设置任何交换,而且,最近,我设置了 vm.swappiness = 0,它仍然挂起。

vm.oom_kill_allocating_task = 1

被设置为 0(默认 Ubuntu 16.04),但是在我将其设置为 1(通过 sysctl,也在 /etc/sysctld 中)之后,没有什么不同。

是否存在已知的错误或者错误设置导致 OOM killer 无法工作?

相关内容