PHP致命错误:内存不足(分配524288)(试图分配311296字节)

时间:2014-03-03 06:12:11

标签: php apache .htaccess vps

在我的php错误日志中大约一个月前,我看到一个错误

PHP Fatal error:  Out of memory (allocated 524288) (tried to allocate 311296 bytes) public_html/index.php on line 347

这很奇怪,因为错误说它只分配了 524288 ,这将 512 KB 错误与以往一样,只发生在这行脚本上,每天大约有10-20倍这个错误

在index.php中的

我已经包含了4-5个脚本并且在该行(ln 347)上只返回了一些css代码并且没有无限循环

我已阅读了很多主题并将 mempry_limit更改为256M 并添加了 RLimitMEM 173741824 247483648 MaxRequestsPerChild 9000 在apache中

在我的测试中,我使用像这样的代码

if($_SERVER['REMOTE_ADDR'] == $my_IP) 
{
  var_dump(memory_get_usage());
  var_dump(memory_get_peak_usage());
}

在脚本的开头和结尾处:

int(729812) int(741124)  -  int(915952) int(953968)  

我安装了 php 5.3.22 的vps,并且 1.5 GB ram 其中大部分时间200-500 mb是免费的,我有一些关于的信息每天20,000次点击可能更多,服务器负载有时会在一段时间内达到8

网站速度非常快,速度没有任何问题

在根目录中有3-4个php文件也可供公众访问,但在错误日志中我看不到它们虽然他们没有那些命中率为index.php

在我的localhost中我安装了 x-debug win cache grind ,当我发布index.php脚本时,我也没有看到错误

在这个vps上我还安装了 wordpress ,它也会出错,但至少他可以分配的内存量更多,其中一个错误是这样的:

PHP Fatal error:  Out of memory (allocated 9961472) (tried to allocate 7 bytes) in /public_html/blog/wp-includes/canonical.php on line 157

对于wordpress我在htaccess中设置memory_limit 256M

我还安装了 livezilla ,这也会产生错误

PHP Fatal error:  Out of memory (allocated 524288) (tried to allocate 77824 bytes) in public_html/support/_lib/functions.global.inc.php on line 520

对于livezilla我也在htaccess中设置了memory_limit 256M

我应该提一下,在我的vps中,我已经托管了5-6个其他网站

有一次我在 phpMyAdmin 中遇到了这个错误:

PHP Fatal error:  Out of memory (allocated 524288) ...

再次只分配了524288

Iv一遍又一遍地重启apache但没有任何改变

由于在该行之前包含其他脚本,错误日志中的行号是否会出错?

可能是Cpu问题吗?

我正在努力解决这个错误大约2个月,我不知道该怎么做 任何想法?

2 个答案:

答案 0 :(得分:0)

很可能您的网络服务器未能配置有关内存消耗,允许并发请求和可用内存的信息。

评估您的日志,了解您对此类峰值的并发请求数量和次数。您可能会通过ab强调服务器重现这些情况。 1.5 GB内存每天20k次点击只是感觉不对。检查您的Web服务器配置允许的并发请求数以及fork可能增长的大小。我很安静,他们肯定会轻易吃掉那1.5 GB。

答案 1 :(得分:0)

在apache中设置prefork的配置工作!