为什么我的 VPS 内存不足?

为什么我的 VPS 内存不足?

我有一个具有 1GB 内存的 Linux 虚拟专用服务器,但是我不断收到以下错误:

fork failed: Cannot allocate memory

不过,我不认为我缺少内存。如果我运行 free:

root@server44:~# free -m
             total       used       free     shared    buffers     cached
Mem:          1024        133        890          0          0          0
-/+ buffers/cache:        133        890
Swap:            0          0          0
root@server44:~# man swapon
man: fork failed: Cannot allocate memory

我有 890 MB 可用空间,但 fork 失败了。知道原因吗?我的服务器是否内存不足?我的主机是运行 HyperVM 的 FsckVPS。

答案1

您使用的是哪种虚拟化技术?至少对于 OpenVZ/Virtuozo 来说,“free”命令不会显示实际可用内存。通常,它显示的内存量比实际分配给 VPS 切片的量大得多。

此外,还有几种不同的“内存”限制,用于限制不同类型的内存(在 OpenVZ 术语中,它们是 kmemsize、lockedpages、privvmpages、shmpages、vmguarpages、oomguarpages 等)。

如果您正在使用 OpenVZ,请检查 /proc/user_beancounters 以查看您达到的限制,并检查“failcnt”列。

答案2

是不是您的主机过度销售了运行虚拟机的主机上的 RAM?可能是您只有 128Mb 的“专用”RAM,如果当时没有其他虚拟机正在使用它,其余的 RAM 可供突发使用。如果您告诉我们有关您正在使用的环境的更多详细信息(哪种虚拟机技术,可能哪个托管提供商及其哪些产品),我们可能会告诉您必须检查这一点。

在虚拟机主机上过度销售 RAM 资源通常是一种坏的我认为这是一个想法,但如果技术允许,许多托管服务提供商都会这样做。

相关内容