在冻结时保持系统可访问

在冻结时保持系统可访问

我们运行一个小型服务器(Ubuntu 14.04)仅用于计算目的。有时,用户会设法消耗足够的内存来冻结系统。上次,罪魁祸首是一个产生 30 个内存消耗子进程的进程。结果是我无法登录机器来修复它 - ssh 和本地登录都超时。 OOM Killer 似乎没有做任何事情。egrep -i 'killed process' /var/log/*什么也没返回。

在这种情况下有没有办法保持/获得命令行访问权限?

答案1

有一种方法可以限制系统资源的使用。
检查ulimit命令及其用法。它有一个conf 文件limits.conf,您可以在其中指定哪些组可以拥有多少资源。例如,如果您在conf文件中指定:

@developers        soft    nproc          20
@developers        hard    nproc          30

那么该developers组只能有 30 个进程,当达到 20 个时,他们会收到警告。您还可以全局限制进程数量ulimit -u 10- 在这种情况下,用户可以运行 10 个进程。

用于ulimit -a显示当前限制。要限制内存,请尝试使用ulimit -v.

user@localhost:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256646
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 32768
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 32768
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

答案2

正如马兹在他的回答中提到的那样,您可以采取措施尝试防止这种情况发生。但为了让盒子从任何情况下恢复,即使是你意想不到的情况,你需要一个看门狗。

在 Linux 中,看门狗是一个定期发送“ping”的进程,如果未收到“ping”,系统将重置。当我说“ping”时,我并不是指网络 ICMP 回显请求,而是指“嘿,我还活着”消息。 ping 可以发送到物理看门狗,该看门狗可能会执行诸如重新启动主机以执行重置之类的操作,但它也可以是 Linux 内核中的操作。后者是您最可能想要的,因为硬件看门狗设备通常只在企业级设备中找到。

无论如何,要开始,您首先需要在内核中启用软件看门狗。这可能是最大的障碍。我不知道ubuntu是否启用了看门狗。看看你有/dev/watchdog没有空。如果没有,请尝试modprobe softdog。如果两者都不起作用,而您仍然想继续这样做,则需要使用该SOFT_WATCHDOG选项重新编译内核。

现在,假设您启用了看门狗,您需要安装看门狗包裹。

安装后,将一个脚本放入/etc/watchdog.d您想要用来执行健康检查的脚本(也可以test-binary在 中使用watchdog.conf),并使其可执行。如果你想确保 ssh 正常运行,你可以这样做:

#!/bin/bash
case "$1" in
test)
  ssh testuser@localhost /bin/true
  ;;
repair)
  service ssh restart
  ;;
*)
  false
  ;;
esac

(要完全按照上面的操作,您需要创建testuser并设置公钥身份验证,但这超出了本答案的范围)

看门狗将调用脚本来test进行健康检查,repair如果失败将尝试。如果修复也失败,系统将被重置。

请参阅看门狗文档了解更多详情。

相关内容