在我的一个小型 VPS 上,我有足够的可用内存来运行那里的程序(如下面的日志所示),但每隔一段时间,当我运行 free -m 时,我就会看到所有的交换都被占用了。
这是什么意思?我应该担心这个问题吗?还是这只是之前峰值未释放的交换量?
total used free shared buffers cached
Mem: 256 225 30 0 5 46
-/+ buffers/cache: 173 83
Swap: 511 511 0
答案1
内存峰值后,您的系统会使用所有交换空间。使用 ps(tor 或 htop)查找使用内存的进程。
答案2
当您看到如上文所述的“free -m”输出时,内存仍在使用中,因此您正处于“内存峰值”之中。使用交换空间的进程终止后,交换空间将立即释放。
不幸的是,很难用“ps”找出哪些进程正在占用交换空间。首先要确定的是那些也使用大量非交换内存的进程。如果您可以轻松重新启动它们,并且可以忍受服务中断几秒钟,只需“杀死”那些可疑进程,然后看看交换使用量是否会下降。