如何调试“致命错误:内存不足(分配XXX)(试图分配XXXXX字节)”?

时间:2011-11-29 10:10:54

标签: debugging out-of-memory php

通过StackOverflow看,我意识到内存不足错误是一个常见问题。 正如其他人所建议的,在某些情况下可以通过增加php.ini中的内存限制来管理。但是,由于编码中存在问题,这通常无法解决错误。

此错误最常见的来源是什么?你如何设计你的代码来避免它? 如何处理调试此类错误?

到目前为止,我知道来源:

  • 无限循环
  • 将大量的db-data提取到一个变量中(如果它不止一个,可能有助于在使用变量后取消设置变量?)

2 个答案:

答案 0 :(得分:0)

是的,当然。

您必须获取/xxxxx/xxxxx.xxx脚本并对与线路22上执行的操作相关的事情进行排序。
并减少内存消耗。

答案 1 :(得分:-1)

有两种解决方案

如果

  • 您的网站有很多流量
  • 您的服务器用于执行一些内存密集型操作(生成PDF /图像等)

如果您的网站上同时有太多人,则服务器内存不足是正常现象。唯一的解决方案是增加它。对于每天计算大量访问者的网站,550M介于低和平均金额之间。

但是,如果您的网站只有很少的流量,比如小公司的网站,那么您可能会遇到问题。检查哪些进程正在占用内存 - 例如使用tophtop - 并采取相应行动。

如果它的PHP占用了太多的RAM,通常这种错误是由无限循环引起的,或者是一个长循环,比如从数据库中提取大量数据,用这些记录创建对象,而不释放存储器中。