当系统负载很高时,是否可以保持 Linux 远程控制台响应(我正在使用 SSH,但是本地的机器也很慢)。
我希望能够远程登录到服务器来监控它,即使系统似乎超载了。
答案1
如果服务器即将挂掉,并且有大量进程争夺 CPU 和其他资源,那么处理起来就有点困难了。有时,如果服务器超负荷,甚至连建立新的 ssh 连接都很难。
在这种情况下,我通常会在同一个网络中使用另一台服务器,并且我会在屏幕上通过该服务器与过载服务器建立 ssh 连接。当过载服务器变得过载过度时,我会通过 ssh 连接到另一台服务器并恢复我的屏幕会话。
但你还有其他选择。
可以使用以下方法将进程划分到多个域中处理器集内核功能。这样,您可以为您的应用程序提供一个域,并允许它仅使用一些核心和一定量的内存。然后,您可以为系统管理创建另一个域,这样您就可以应该留出一些空间来满足您的 ssh 需求。
不过,在执行此操作之前,您应该确定高系统负载来自何处。是因为 CPU 使用率极高吗?应用程序是否不断访问磁盘并使 I/O 操作非常缓慢?应用程序是否耗尽了所有 RAM 并且交换导致速度缓慢?内存/其他资源使用是否在预期之内,还是应用程序中存在潜在错误,导致它突然耗尽所有 RAM 或 CPU?
如果是后者,那么您可以安装普斯蒙或类似软件。例如,psmon 可以监视您的系统,如果监视的进程占用超过 X 兆字节的 RAM 或持续占用超过 Y% 的 CPU,则可以关闭并重新启动监视的进程。
如果预计资源使用率较高,那么您应该考虑升级硬件。
答案2
这可能有点棘手,具体取决于高负载对您意味着什么。最好在服务器负载过高之前登录。由于这不是一个选项(无法全天登录),我会尝试稍微限制普通用户(足以让您登录并挽救局面)。
我建议尝试/etc/limits.conf
(参见 man limits.conf
)来限制内存并提高非 root 用户的优先级。这样仍然有一个资源窗口供管理用户登录。