当 Ubuntu 网络服务器上的“可用”交换空间即将用完时,这意味着什么?

当 Ubuntu 网络服务器上的“可用”交换空间即将用完时,这意味着什么?
www ~: 免费
             已使用的、可用的、缓存的共享缓冲区总数
内存:2048 1848 199 0 21 274
-/+ 缓冲区/缓存:1552 496
交换:4095 4086 9

在我的 Ubuntu 生产网络服务器上,运行 apache/nginx/MySQL 并为大量网络客户提供服务,看起来我们的可用交换内存空间几乎全部用完了。这是什么意思?我知道我们应该为服务器添加更多 RAM/内存,但我想知道如果继续使用当前的使用情况会有多糟糕?我们打算等到这个周末,当交换空间用完时,服务器会崩溃吗?停滞不前?运行真的很慢?

答案1

这意味着内存不足。如果内存还没有因为持续的磁盘活动而变得异常缓慢,那么可能有一些进程分配了内存但没有使用,然后被交换出去。如果内存耗尽,系统将开始随机地终止进程(搜索 OOM killer 可以找到大量关于 OOM 如何选择要终止的进程的讨论)。

那么,有哪些方法可以解决这一问题呢?

使用 top 之类的命令来找出占用所有内存的原因。确定内存占用者是否确实需要内存,或者是否是错误。如果是错误,请尝试找到修复方法。

如果您无法承受因添加内存而导致的停机,您可以检查是否可以承受短暂停电,然后终止/重新启动该进程。

使用 Linux 你可以创建交换文件,交换不需要位于其自己的分区上。因此,如果您想要/需要添加更多交换,您可以非常轻松地完成此操作,而无需重新启动。

相关内容