VPS 内存使用情况

VPS 内存使用情况

今天早上在我去办公室的路上,我们共享 VPS 上的每个网站都开始出现同样的错误(几次,不是典型的致命的 memory_limit 错误):

Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0

共享服务器是一个运行 cPanel 的 64 位 OpenVZ 容器。主机上只有大约 6 个 VPS——这是最大的一个,只有 4GB。主机本身有 24GB RAM。如下图所示,主机和 VPS 的内存使用率都相当低。CPU 使用率/磁盘/主机似乎都正常。RlimitMem 设置为583653034,但内存使用率与平常差不多。

Apache 2.2,PHP 5.2(mod_php)

重新启动 Apache 暂时解决了这个问题。但是,我想防止这种情况再次发生,我不确定是什么限制了内存。RlimitMem 设置为583653034,但内存使用量与平常差​​不多。似乎内存充足:是什么导致了这个错误?

VPS 内存使用情况

共享虚拟机内存使用率徘徊在 50% 左右

主机内存使用情况

主机虚拟机内存使用情况,使用量徘徊在 20%,缓存在 65%,直到凌晨 6 点,降至约 60%,缓冲在约 10%

APC 信息

 apc.ttl=0
 apc.shm_size=0
 apc.mmap_file_mask=(blank)

1 个段,大小为 32.0 MB(mmap 内存,pthread 互斥锁定)

答案1

这绝对是 APC 内存不足时出现的错误。当我(重新)构建服务器时,我经常忘记将此值增加到 128 M(适合我的应用程序),这就是您看到的确切错误。

答案2

/proc/bc/resources 中有任何失败计数吗?

所有失败计数应为 0 或自上次事件以来保持不变。

你需要:

  1. vzct set <CTID> ... --save增加具有失败计数的资源的资源限制(请man vzctl参阅部分)。您还可以直接在 中修改资源限制/etc/vz/conf/。可能在所有情况下,增加限制后您都需要重新启动容器。

    为了安全起见,将有问题的资源的设置(障碍和限制)增加到最大持有量的 x2(两倍)。

  2. 写下当前的失败次数并密切关注它们,以免它们进一步增加。

有关控制各种资源的更多信息,您可以使用http://wiki.openvz.org/Resource_shortage作为起点。

答案3

您能否告诉我们更多关于主机已占用内存的信息?(例如,您为虚拟机分配了多少总内存,主机上每个虚拟机的内存是多少)我知道您最大的内存是 4GB,但如果其他内存都是 3GB,并且系统已占用 19GB,则应该显示有 5GB 内存可供托管操作系统使用。我的计算、假设或其他因素与上面的主机内存图(显示已占用 94% 的内存)不一致。

答案4

共享内存分配 sysctl 限制?查看 /etc/sysctl.conf 中的 shmmax 和相关项。

或者,您是否在 64 位操作系统上运行 32 位 PHP 和/或 Apache?我们在 64 位 Linux 上的高内存使用率 32 位应用程序中看到了奇怪的“天哪,我的内存不够了,我要填满交换空间了,尽管有 16GB 的可用物理内存”行为。

相关内容