php - Laravel4 内存消耗问题

标签 php laravel-4

案例

目前我正在使用 Laravel 4 开发一个应用程序。我安装了 profiler查看有关我的应用程序的统计信息。这是截图:

enter image description here

问题

  • 您可以看到,在我的 vagrant(Ubuntu 64 位 + Nginx + PHP 5.3.10+ MySQL)中,每个请求(非常简单的页面)都会消耗 12.25 MB 内存。你觉得这太过分了吗?这意味着如果我有 100 个并发连接,则内存消耗约为 1 GB。我认为这太过分了,但你觉得怎么样?
  • 它会为每个请求加载 237 个文件。你觉得这太过分了吗?
  • 当我将此应用程序部署到我的服务器(Centos 6.4 with Apache + PHP 5.5.3 with Zend OPcache + MySQL)时,内存消耗急剧减少。这是服务器的屏幕截图:

enter image description here

您如何看待我的 Mac 和服务器之间的差异?

最佳答案

不,你真的不需要担心这个。

对于 PHP 程序来说,12MB 并不是一个很大的数字。 100 个并发连接已经很多了。

具体来说,假设您的 PHP 页面需要半秒才能运行,这意味着您需要每分钟 12000 次页面加载才能实现一致的 100 个并发连接。我可以告诉你,这比我的任何网站获得的流量都要多。

当然,如果您的页面加载时间超过半秒,这个数字会很快下降,并且您可以更轻松地实现 100 个并发连接。

这就是为什么关注性能确实是个好主意的原因之一 - 程序完成运行的速度越快,释放内存的速度就越快为下一位访客。事实上,除非您遇到真正严重的内存使用问题(您没有),否则在这种情况下性能可能比使用的内存量更重要。

无论如何,如果您确实有 100 个并发连接,那么在 PHP 出现问题之前,您的服务器软件很可能会出现问题。 Apache 对最大连接数有默认限制,并且远低于 100。(当然,您可以提高它,但如果您确实获得这种流量,您可能会需要更多服务器) )

至于 12M 内存使用量,您实际上不可能比 PHP 程序使用的内存量少很多。 PHP 需要一大块内存才能首先运行,框架也需要一 block 内存,所以你的 12M 大部分都是由于这个原因。这意味着虽然您的小程序可能使用 12M,但这并不意味着较大的程序会使用两倍的内存。所以你可能不需要太担心。

如果您确实遇到高流量并因此出现性能问题,可以采用多种方法来缓解该问题。主要的一种是使用缓存。 PHP 5.5 内置了一个 OpCache 模块,它将为您缓存您的程序,这样它就不必执行所有引导工作,例如每次加载所有文件。对于某些系统,这可能会对性能产生巨大影响。

您还可以使用其他缓存层,例如像 Varnish 这样的服务器级页面缓存,它将缓存您的静态页面,这样如果页面内容没有更改,甚至不需要调用 PHP .

(当然,关注性能还有其他原因,例如让访问者满意)

关于php - Laravel4 内存消耗问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20374542/

相关文章:

php - Laravel Auth::logout 不删除记住我的 cookie

php - MYSQL IN 子句错误

当我点击返回时需要显示 php 搜索结果

javascript - 从 URL 上传图像到 Parse

php - Laravel 队列如何工作以及如果 php artisan 队列 :listen stops 怎么办

jquery - Laravel 4 CSRF表单通过Ajax调用提交

php - 使用硬连接查询 mysql

php - 如何在显示 WordPress 帖子的 PHP 中循环 while 语句?

php - 无法打开输入文件 : artisan

Laravel 将数组转换为模型