【问题标题】:FuelPHP site using 10x more memory on remote serverFuelPHP 站点在远程服务器上使用了 10 倍以上的内存
【发布时间】:2014-01-19 21:11:35
【问题描述】:

我正在使用 FuelPHP 框架构建一个网站,该框架默认在页面底部打印执行时间和内存使用情况。现在我注意到在我的本地机器上,我的内存占用非常小:

Page rendered in 0.0304s using 0.721mb of memory.

我将这个站点(包括数据库的快照)准确地部署到我的远程测试服务器,突然内存使用量增加了 10 倍:

Page rendered in 0.0963s using 7.099mb of memory.

我无法单独从执行细节上解释这么大的差异,所以我认为偏差一定是在环境中。 不幸的是,我主要是一名程序员,而不是真正的服务器管理员,所以我真的不知道从哪里开始寻找。所以我要问一个一般性的问题,希望能给我一些有用的指示:我应该从哪里开始寻找?代码完全相同,据我所知,两台机器(本地笔记本电脑和远程服务器)都是使用 PHP5 的相当标准的 Apache 安装。欢迎任何建议可能导致此问题的特定 Apache 或 PHP 设置或在日志中搜索特定行的答案。

我意识到这是一个非常笼统的问题,可能会让我投反对票,因此欢迎任何建设性的批评。基本上,我现在不知道从哪里开始寻找。

更新:我决定首先排除框架为罪魁祸首,所以我在两台机器上运行了以下单行脚本:

本地我得到的值约为 115,而远程服务器报告的值约为 600。

更新 2:刚刚注意到我在本地运行 PHP5.5,但服务器只有 5.3。也许稍后会修复一些错误 - 将首先升级。

【问题讨论】:

  • 本地和远程操作系统相同?
  • 服务器/php 配置?附带说明一下,他们使用了很多静态,通常意味着糟糕的框架。奇怪的内存使用证实了这一点。我建议您改用 Symfony2 或 Zend Framework 2。
  • @Dagon 差不多,在本地运行 Ubuntu 13.10,而服务器运行 12.04 LTS 版本。
  • 你试过serverfault.com吗?
  • 找出哪个脚本和以后的内容 - 哪个代码部分/块确切地消耗了大量内存。然后你就会知道源头,修复它会更容易

标签: php fuelphp


【解决方案1】:

感谢各位大侠的建议,我解决了这个问题。 正如原帖更新中所指出的,我意识到我在本地运行 PHP5.5,但服务器只有 5.3。经过apt 的一些 ppa-magic 和其他问题的帮助,我设法用 PHP 5.5.x 安装了 Apache 2.4。现在我真的看到了

Page rendered in 0.0261s using 0.582mb of memory.

本地和远程

Page rendered in 2.3184s using 1.238mb of memory.

假设因素 2 是由于服务器是 64 位而不是我的开发机器造成的,我可以忍受剩下的差异。

【讨论】:

  • 为什么你的远程服务器需要两个数量级的时间来生成页面?我认为您需要使用 Xdebug 进一步调查
  • 是的,我还发现了一些缓存问题。现在把它降到相同的数量级。
  • 可能是磁盘 io。如果它真的是服务器,它很可能是慢速 RPM 服务器 HDD 与本地 SSD。
【解决方案2】:

使用 Xdebug 找出正在使用所有内存的函数。

很可能是框架中的错误或设计缺陷。

根据您的服务器,让 Xdebug 工作可能很困难,甚至是不可能的。但有时它是预先安装的并且很简单。

【讨论】:

  • 谢谢阿比。眼前的问题已经解决,但我会考虑安装 Xdebug 并在某个时候检查框架,看看我是否能找到任何奇怪的东西并可能挤出更多的性能。不过,目前我的首要任务是完成开发和测试。
猜你喜欢
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
相关资源
最近更新 更多