我的一台 Ubuntu 服务器的交换分区已满。这种情况会带来哪些危险和/或性能影响?
答案1
交换基本上有两个作用 - 首先将较少使用的“页面”从内存移出到存储中,以便更有效地利用内存。其次,如果内存不足,它会“添加”内存。
如果是前一种情况,那就没问题。如果是后一种情况,则可能出现两种情况。首先,磁盘使用量会增加。如果磁盘速度不够快,系统可能会出现故障,数据在内存中交换时会变慢。这会导致瓶颈。
第二种可能性是你可能会跑出去内存,从而导致异常和崩溃。
有几种方法可以解决这个问题。首先,增加交换空间。一种选择可能是在下次进行维护时增加交换分区的大小,或者切换到交换文件这两种方法都只是对主要问题的临时解决办法,但应该能在短期内帮助你渡过难关。
这真实的解决方案是增加内存。没有什么可以替代真正的黄油内存,如果你有足够的内存,你可以少交换一些。
如果出于某种原因,尽管内存已用尽,您仍需要大量交换,请考虑使用更快的存储设备进行交换 - SSD 可能是一种比在旋转驱动器上进行交换更快的选择。这可能会导致系统比使用旋转驱动器更快,并且使用足够大的 SSD,并设置更大的备用空间,您可以最大限度地延长驱动器的使用寿命,提高绩效恒常性,但会占用一些空间。这是一种倒退,但在这里使用单独的交换驱动器可能是一种选择。
如果你想做这件事正确的你可能还想锻炼什么占用了那么多内存,以及原因。Htop 是一个很好的开始,对此有一个完整的问题,然后尝试根据需要调整程序。这当然取决于整体性能和其他要求,并且可能特定于程序及其用途
答案2
危险在于听起来相当不祥的 OOM Killer。
答案3
我不确定你说的“已满”是什么意思,但我假设它一直在使用中。如果你的系统大量使用交换空间,那么它会影响整个系统的性能,因为传统驱动器比 RAM 慢得多。你要么需要配置和调整一些应用程序以使用更少的资源,要么添加更多 RAM。