Php Laravel4内存消耗问题 案例

Php Laravel4内存消耗问题 案例,php,laravel-4,Php,Laravel 4,目前我正在使用Laravel4开发一个应用程序。我安装以查看我的应用程序的统计信息。这是屏幕截图: 问题 您可以看到,在MyVagrant(Ubuntu 64位+Nginx+PHP5.3.10+MySQL)中,它为每个请求(非常简单的页面)消耗12.25MB内存。你觉得这太过分了吗?这意味着如果我有100个并发连接,内存消耗大约为1GB。我觉得这太过分了,但你觉得呢 它为每个请求加载237个文件。你觉得这太过分了吗 当我将此应用程序部署到我的服务器(Centos 6.4,Apache+PHP

目前我正在使用Laravel4开发一个应用程序。我安装以查看我的应用程序的统计信息。这是屏幕截图:

问题
  • 您可以看到,在MyVagrant(Ubuntu 64位+Nginx+PHP5.3.10+MySQL)中,它为每个请求(非常简单的页面)消耗12.25MB内存。你觉得这太过分了吗?这意味着如果我有100个并发连接,内存消耗大约为1GB。我觉得这太过分了,但你觉得呢
  • 它为每个请求加载237个文件。你觉得这太过分了吗
  • 当我将此应用程序部署到我的服务器(Centos 6.4,Apache+PHP5.5.3,Zend OPcache+MySQL)时,内存消耗会显著减少。这是服务器的屏幕截图:


你觉得我的mac电脑和服务器之间有什么区别?

不,你真的不需要担心这个问题

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

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

当然,如果你的页面加载时间超过半秒,这个数字会很快下降,而你的100个并发连接可能会更容易实现

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

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

至于12M内存的使用量,你不可能真正得到比PHP程序更少的内存。PHP首先需要一块内存才能运行,而框架也需要一块内存,因此您的1200万内存中的大部分都是由于这一点。这意味着,尽管您的小程序可能使用12M,但并不意味着较大的程序将使用两倍的容量。所以你可能不需要太担心它

如果您确实存在高流量,并因此导致性能问题,则有多种方法可以缓解此问题。主要的方法是使用缓存。PHP5.5内置了一个OpCache模块,它将为您缓存程序,这样它就不必执行所有引导工作,比如每次加载所有文件。对于某些系统,这可能会对性能产生显著影响

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


——当然,关注性能还有其他原因,比如让访客开心)

谢谢您的回答!你认为我的服务器和流浪者盒子有什么不同?12MB有点不正常……另一个大型框架yii框架对原始页面仅使用3-4MB,对密集页面可能使用6MB……尝试使用更快、更少的内存、更简单的yii@CanGeliş谢谢你的评论!你能澄清一下你说的是哪个缓存吗?视图、代码或数据缓存?您说您的vagrant box运行PHP5.3.10,而您的服务器运行PHP5.5.3。在版本差异如此之大的情况下,内存消耗将大幅降低。@NikiC谢谢!你说得对。这是下降的原因之一。我在禁用OPCache时测试了同一页。这也将内存使用量从3.25M增加到了8.30M。@CanGelişOpcache使用不同的分配器,因此Opcache存储的内容不计入PHP报告的内存使用量。另一方面,由于opcache使用的内存在所有PHP进程之间共享,因此从实用角度来看,这可能是有意义的。