www ~: 免费 已使用的、可用的、缓存的共享缓冲区总数 内存:2048 1848 199 0 21 274 -/+ 缓冲区/缓存:1552 496 交换:4095 4086 9
在我的 Ubuntu 生产网络服务器上,运行 apache/nginx/MySQL 并为大量网络客户提供服务,看起来我们的可用交换内存空间几乎全部用完了。这是什么意思?我知道我们应该为服务器添加更多 RAM/内存,但我想知道如果继续使用当前的使用情况会有多糟糕?我们打算等到这个周末,当交换空间用完时,服务器会崩溃吗?停滞不前?运行真的很慢?
答案1
这意味着内存不足。如果内存还没有因为持续的磁盘活动而变得异常缓慢,那么可能有一些进程分配了内存但没有使用,然后被交换出去。如果内存耗尽,系统将开始随机地终止进程(搜索 OOM killer 可以找到大量关于 OOM 如何选择要终止的进程的讨论)。
那么,有哪些方法可以解决这一问题呢?
使用 top 之类的命令来找出占用所有内存的原因。确定内存占用者是否确实需要内存,或者是否是错误。如果是错误,请尝试找到修复方法。
如果您无法承受因添加内存而导致的停机,您可以检查是否可以承受短暂停电,然后终止/重新启动该进程。
使用 Linux 你可以创建交换文件,交换不需要位于其自己的分区上。因此,如果您想要/需要添加更多交换,您可以非常轻松地完成此操作,而无需重新启动。