我有一台 Debian 9 服务器,负载超过 4000。“top”显示有 18,132 个进程处于休眠状态。
最初,我看到许多“ps”进程,有数百个,因此我按名称将它们全部终止。
我目前没有看到任何有问题的进程,但负载仍然存在。此外,我无法进行远程重启。它声称系统正在关闭以进行重启,但什么也没发生。如果我打开另一个终端,它仍然可以工作。
除了让某人现场重新启动之外,我该如何摆脱这些备份进程?
答案1
休眠任务不会增加您的平均负载。正在运行的任务会增加,此外在 Linux 上,TASK_UNINTERRUPTIBLE 通常是 I/O。
由于调度程序优先考虑交互用户,因此新 shell 的响应速度可能还算可以接受。但是执行大量工作时,速度就会变得非常慢。
查找并停止启动更多此类进程的脚本或服务。然后终止任务。这可能需要您最喜欢的任务管理脚本(ps
、pkill
)以及对无响应系统的耐心。
干净重启将使系统响应,但可能也需要很长时间才能获得 CPU 时间来关闭几千个任务。使用远程带外方式关闭电源,无论是物理机的 BMC 还是虚拟机管理程序控制台。
预防措施包括每个用户的任务限制。对于 Linux 上的 pam_limits, 文件nproc
中的行/etc/security/limits.d/
。