PHP无法分配内存

今天早上去办公室的路上,我们共享的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%

主机内存使用情况

host vm内存使用率,使用率徘徊在20%,缓存在65%,直到上午6点,下降到60%,缓存在〜10%

APC信息

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

1段(32.0 MBytes)(mmap内存,pthread互斥锁)

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

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

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

你需要:

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

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

  2. 写下当前的失败计数,并留意它们,使它们不再增加。

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

你能告诉我们更多关于如何订阅主机? (例如,你提交给虚拟机的内存总量有多less,主机上每个虚拟机有多less内存)我知道你最大的内存是4GB,但是如果其余的都是3GB,系统订购的是19GB,那应该显示5GB内存免费为主机操作系统。 无论是我的math,假设或其他东西都不凝结上面的主机内存图(显示占94%的RAM)。

共享内存分配sysctl限制? 在/etc/sysctl.conf中查看shmmax和朋友。

或者,您是在64位操作系统上运行32位PHP和/或Apache? 我们已经看到了奇怪的“噢,我的上帝,我内存不足了,即使通过64位Linux上的高内存使用32位应用程序有16GB的免费物理内存的行为,我会填补交换。