Laravel4内存消耗问题

Can*_*liş 2 php laravel-4

案件

目前我正在使用Laravel 4开发应用程序.我安装了探查器以查看有关我的应用程序的统计信息.这是截图:

在此输入图像描述

问题

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

在此输入图像描述

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

Spu*_*ley 10

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

对于PHP程序来说,12MB实际上并不是很大.100个并发连接很多.

要将其置于上下文中,假设您的PHP页面需要半秒才能运行,这意味着您需要每分钟有12000个页面加载才能实现一致的100个并发连接.这比我的任何网站都要多得多,我可以告诉你.

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

这是一个原因,为什么这是一个非常好的主意,注重业绩 -更快的程序可以完成运行,更快它可以释放它的下一个游客的记忆.事实上,除非你有一个非常重要的内存使用问题(你没有),在这种情况下,性能可能比使用的内存量更重要.

在任何情况下,如果您有100个并发连接,那么在使用PHP之前,您可能会遇到服务器软件问题.Apache对最大连接数有一个默认限制,它远远低于100.(当然,你可以提高它,但如果你真的得到那种流量,你可能会想要更多的服务器)

至于12M内存使用情况,你实际上不可能比PHP程序少得多.PHP需要一块内存才能在第一时间运行,并且框架也需要一个块,因此大部分12M都是由于这个原因.这意味着虽然您的小程序可能使用12M,但并不意味着较大的程序会使用两倍的程序.所以你可能不需要太担心它.

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

您还可以使用其他层缓存,例如Varnish之类的服务器级页面缓存,它将缓存您的静态页面,以便在页面内容未更改时甚至不需要调用PHP.

(当然还有其他原因可以集中关注性能,比如让访问者感到满意)