内存和交换已满,无法 ssh;除了物理重启之外还有其他选择吗?

内存和交换已满,无法 ssh;除了物理重启之外还有其他选择吗?

由于错误,我在 ubuntu 服务器上执行了一些占用所有内存(我想还有交换空间)的应用程序,现在它崩溃了,SSH 无法工作并且冻结。除了以下解决方案之外,您还知道其他选择吗:

  1. 物理地重启服务器。
  2. 等到一个过程结束。

当 ssh 不工作时,有什么方法可以远程重启服务器?我仍然可以 ping 服务器,所以想知道是否有任何保留的内存用于终止不友好的进程或用于重新启动操作系统等基本命令。

* 使用“nohup”执行的命令不会通过关闭 ssh 会话而结束。

答案1

不,你的系统……基本完蛋了。你唯一的希望就是等着一个进程结束,或者等着进程变得太大,让 OOM 杀手来介入并采取措施。

答案2

听起来你的系统正在发生所谓的抖动。这意味着你的系统正在为正在使用的系统交换内存中的页面。其中包括 SSH。

实际上,您有几个选择。第一个选择当然是重新启动服务器,但这听起来对您来说不是一个好选择,因为它不在您本地。如果它在数据中心,那么您可以让他们走到它那里并重新启动它。您必须与数据中心核实。

第二种选择也很简单。您的 SSH 会话只是挂起,等待某些内容被交换出去,以便为您分配一个 tty。我以前也遇到过这种情况,您只需等待它响应,这可能需要很长时间。一旦您有了 cli,您就可以终止或重新启动服务器。

您可以 PING 服务器的原因实际上非常简单,内核的 IP 堆栈(IIRC)没有被换出,这就是 ICMP 能够响应的原因。

第三个选项需要事先进行一些设置,因此我认为目前它不适合你。你可以设置一个调制解调器,以便拨入号码并获取串行控制台。同样,你可以使用 IPMI Serial over LAN (SOL) 获取串行控制台。此外,IPMI 还允许你重新启动服务器。再次强调,这些似乎不适合你。

相关内容