如果内存不足,请重新启动系统?

dev*_*150 3 linux reboot out-of-memory

我需要通过 SSH 在远程计算机上运行一些内存繁重的测试。上次我这样做时,计算机停止响应,需要有人物理重新启动它。

有没有一种方法可以设置它,以便在使用太多内存时系统重新启动而不是冻结?(我确实有 root 访问权限)。内核版本为 4.9.0。

Rui*_*iro 5

要监视/恢复对“不稳定”/饥饿服务器的控制,我建议使用硬件,或者使用软件看门狗失败;在 Debian 中,您可以使用以下命令安装它:

sudo apt-get install watchdog
Run Code Online (Sandbox Code Playgroud)

然后编辑/etc/watchdog.conf和添加阈值或测试;从我的头顶看,看门狗也被激活,如果内核在重新启动时没有看到它。例如,如果一个软件例程在固定的时间内没有与/dev/watchdog0或类似的东西交谈。

例如,您可以在/etc/watchdog.conf以下位置定义负载阈值:

max-load-1             = 40
max-load-5             = 18
max-load-15            = 12
Run Code Online (Sandbox Code Playgroud)

另请注意,某些板/芯片组带有内置看门狗;如果我没记错的话,Arm A20 就是其中之一。

人看门狗

如果检测到严重问题,Linux 内核可以重置系统。这可以通过特殊的看门狗硬件来实现,也可以通过内核中可靠性稍差的纯软件看门狗来实现。无论哪种方式,都需要有一个守护进程告诉内核系统工作正常。如果守护程序停止这样做,系统将重置。

看门狗就是这样一个守护进程。它打开 /dev/watchdog,并保持写入它的频率足以防止内核重置,至少每分钟一次。每次写入都会将重新启动时间再延迟一分钟。一分钟不活动后,看门狗硬件将导致复位。在软件看门狗的情况下,重新启动的能力取决于机器和中断的状态。

如果设备 /dev/watchdog 正确关闭,则可以停止看门狗守护进程而不会导致重新启动,除非您的内核是在启用 CONFIG_WATCHDOG_NOWAYOUT 选项的情况下编译的。

另请参阅Raspberry Pi 和 Arduino:使用看门狗定时器构建可靠的系统