![尽管有可用内存,但无法分配内存?](https://linux22.com/image/503380/%E5%B0%BD%E7%AE%A1%E6%9C%89%E5%8F%AF%E7%94%A8%E5%86%85%E5%AD%98%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E5%88%86%E9%85%8D%E5%86%85%E5%AD%98%EF%BC%9F.png)
我有一个 Web 服务器最近行为异常。为了简单起见,请看以下内容:
[root@xxxxx test]# ls -lah
-bash: fork: Cannot allocate memory
[root@xxxxx test]# free -m
total used free shared buffers cached
Mem: 1285 899 386 0 0 0
-/+ buffers/cache: 899 386
Swap: 0 0 0
那么,为什么会发生这种情况?我还需要提供其他信息才能获得帮助吗?
答案1
我知道,您使用的是 Virtuozzo 或 OpenVZ PVS(伪虚拟服务器),这使得“内存”的概念充其量只是一个相当似是而非的概念。您的提供商限制了您可以使用的“过度承诺”内存量,而您遇到了这个问题。顺便说一句,您在 free 中看到的“总内存”数字与 VZ PVS 中的实际情况无关——提供商可以配置 VZ 以显示他们想要的任何数字,而不管实际分配给您的资源是什么。
您需要向您的提供商提出此支持请求,因为他们是唯一可以帮助您的人(我们看不到您的 PVS 的配置,更不用说更改它了),如果您没有从他们那里获得所需的支持,我强烈建议您切换到可以为您提供(a)合适的 VPS 的提供商,该 VPS 实际上有它所说的可用内存(即。不是基于 VZ 的 PVS)和 (b) 对您所付费产品的适当支持。
答案2
我认为您受到配额系统的限制。如果可以...只需从 shell 运行配额检查用户...前提是您已在 vps 环境中授予该特定命令的访问权限。
干杯!