【发布时间】:2020-10-29 09:19:26
【问题描述】:
我正在将生产服务器 Cakephp 2.3.8 项目复制/迁移到开发项目中,但出现了著名的错误:
块引用 致命错误 错误:1073741824 字节的允许内存大小已用尽(尝试分配 200648563 字节) 文件:/var/www/html/lib/Cake/Utility/String.php 线路:243
注意:如果要自定义此错误信息,请创建 app/View/Errors/fatal_error.ctp
我已经镜像了与生产服务器相同的规格:
- 试图将 apache > php.ini 文件的默认内存限制从 128M 增加到 1024
- 也是 1024 到 2048,但没有运气
- 重新启动服务器和 apache 服务
- 限制我的数据库上的数据集(目前有 6 个,但生产服务器在我正在查询的表上有大约 40K 行)
- 测试了控制器内部的一个函数,只显示一行文本(成功显示它,但致命错误消息不断出现)。
这主要发生在我访问某些控制器时,因为我能够正确加载某些页面(显然)。
我目前正在日志文件中调试应用程序的行为:
- /ppp/tmp/logs/error.log
- Xdebug
但是它们都没有显示致命错误限制的更多详细信息,我被告知这可能是内存泄漏,如果两台服务器都以相同的方式受到限制怎么办? (以下服务器的 ulimit)。
我想知道问题是什么,我错过了一个设置?我怎样才能调整控制器以使其正常运行?
开发服务器规格
- Centos 7
- PHP 5.4.16 (cli)(构建时间:2020 年 4 月 1 日 04:07:17)
版权所有 (c) 1997-2013 PHP Group
Zend Engine v2.4.0,版权所有 (c) 1998-2013 Zend Technologies
使用 Xdebug v2.2.7,版权所有 (c) 2002-2015,作者 Derick Rethans
- Linode 上的 VPS:2 核 4 GB RAM
- 上限:
核心文件大小(块,-c)0
数据段大小 (kbytes, -d) 无限制
调度优先级 (-e) 0
文件大小(块,-f)无限制
未决信号 (-i) 15076
最大锁定内存 (kbytes, -l) 64
最大内存大小 (kbytes, -m) 无限制
打开文件 (-n) 1024
管道大小(512 字节,-p)8
POSIX 消息队列(字节,-q)819200
实时优先级 (-r) 0
堆栈大小(千字节,-s)8192
cpu时间(秒,-t)无限
最大用户进程 (-u) 15076
虚拟内存 (kbytes, -v) 无限制
文件锁 (-x) 无限制
生产服务器
- Centos 7
- PHP 5.4.16 (cli)(构建时间:2020 年 4 月 1 日 04:07:17)
版权所有 (c) 1997-2013 PHP Group
Zend Engine v2.4.0,版权所有 (c) 1998-2013 Zend Technologies
- 专用服务器:16 核(32 线程),128Gb RAM
- 上限:
核心文件大小(块,-c)0
数据段大小 (kbytes, -d) 无限制
调度优先级 (-e) 0
文件大小(块,-f)无限制
待处理信号 (-i) 514324
最大锁定内存 (kbytes, -l) 64
最大内存大小 (kbytes, -m) 无限制
打开文件 (-n) 8192
管道大小(512 字节,-p)8
POSIX 消息队列(字节,-q)819200
实时优先级 (-r) 0
堆栈大小(千字节,-s)8192
cpu时间(秒,-t)无限制
最大用户进程 (-u) 8192
虚拟内存 (kbytes, -v) 无限制
文件锁 (-x) 无限制
提前致谢
更新 1
这是将 lib/Cake/View/Errors/fatal_error.ctp 复制到 app/View/Errors/fatal_error.ctp 并添加后显示的内容
<pre><?php echo h($error->getTraceAsString()); ?></pre>
致命错误 错误:允许的内存大小 1073741824 字节已用尽(尝试分配 126212148 字节) 文件:/var/www/html/lib/Cake/Utility/String.php 线路:243
注意:如果要自定义此错误信息,请创建 app/View/Errors/fatal_error.ctp
20 年 7 月 9 日更新
#0 /var/www/html/lib/Cake/Error/ErrorHandler.php(184): ErrorHandler::handleFatalError(1, '允许的内存...', '/var/www/html/l. ..', 243)
#1 [内部函数]: ErrorHandler::handleError(1, 'Allowed memory ...', '/var/www/html/l...', 243, Array)
#2 /var/www/html/lib/Cake/Core/App.php(931): call_user_func('ErrorHandler::h...', 1, '允许的内存...', '/var /www/html/l...', 243, 数组)
#3 /var/www/html/lib/Cake/Core/App.php(904): App::_checkFatalError()
#4【内部函数】:App::shutdown()
#5 {主}
在此之前,我正在取出一些组件和助手:
var $helpers=array("Js","Html","Form","Paginator","Fck","Cache","Pagination");
var $components=array("Customcomponent","Paginator","RequestHandler","Cookie","Pagination","Email");
但没有运气(得到相同的错误消息),我的其他控制器不使用助手,只有以下组件:
var $components=array("Customcomponent","RequestHandler","Cookie","Email","Pagination","Paginator");
【问题讨论】:
标签: php memory cakephp centos7