我的 Ubuntu 20.04 服务器有许多加密货币守护进程,我在这台服务器上只有这种负载。有时服务器会耗尽这些守护进程的内存,即使我在交换分区中有足够的内存,这也是一个例子:
我猜服务器内存耗尽是因为 RAM 几乎已满,我想减少内存 RAM 中的负载,将某些内容更改为交换分区,这可能吗?或者还有其他最佳方法可以帮助服务器避免内存耗尽?
谢谢。
编辑:
free -h
输出:
total used free shared buff/cache available
Mem: 62Gi 60Gi 318Mi 0.0Ki 2.1Gi 1.7Gi
Swap: 381Gi 121Gi 260Gi
sudo sysctl vm.swappiness
输出:
vm.swappiness = 70
答案1
我不确定这是哪个实用程序的快照,但分析内存使用情况很棘手。例如,Linux 会将内容缓存在内存中,因为……嘿,为什么不呢。所以如果我运行:
find . -type f | xargs cat >/dev/null
当它完成后,您可能会发现所有内存都被“使用”了,因为它正在缓存整个文件系统。然而它并没有真正被使用,因为它缓存的东西您再也不需要了。所以您往往想要分析的不是使用了多少内存,而是您的交换分区受到的打击有多大。如果它没有受到严重打击,那么您可能有足够的内存。您可以尝试禁用交换。没有它服务器运行良好吗?也许你有足够的内存。不过我还是会启用交换,因为它可以摆脱很少使用的东西。至于控制交换,在大多数情况下,您无法控制放在那里的东西,内核会为您做这件事。它通常做得很好。