当前位置:  开发笔记 > 编程语言 > 正文

Laravel真的很慢吗?

如何解决《Laravel真的很慢吗?》经验,为你挑选了5个好方法。

我刚开始使用Laravel.我几乎没有编写任何代码,但我的页面需要花费一秒钟才能加载!

laravel时间

当我的无框架应用程序和NodeJS应用需要大约2毫秒时,这对我来说有点令人震惊.什么是Laravel在做什么?这不是正常的行为吗?它需要一些微调吗?



1> mpen..:

Laravel是不是实际上缓慢的.500-1000毫秒是荒谬的; 我在调试模式下将其降低到20ms.

问题是Vagrant/VirtualBox +共享文件夹.我没有意识到他们的性能受到了打击.我想因为Laravel有很多依赖项(加载~280个文件)并且每个文件读取都很慢,所以它加起来非常快.

kreeves向我指出了正确的方向,这篇博文描述了Vagrant 1.5中的一项新功能,它允许您将文件同步到VM而不是使用共享文件夹.

Windows上没有本机rsync客户端,因此您必须使用cygwin.安装它,并确保检查Net/rsync.添加C:\cygwin64\bin到您的路径.[或者你可以在Win10/Bash上安装]

Vagrant引入了新功能.我正在使用Puphet,所以我的Vagrantfile看起来有点滑稽.我不得不调整它看起来像这样:

  data['vm']['synced_folder'].each do |i, folder|
    if folder['source'] != '' && folder['target'] != '' && folder['id'] != ''
      config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", 
        id: "#{folder['id']}", 
        type: "rsync",
        rsync__auto: "true",
        rsync__exclude: ".hg/"
    end
  end

一旦你完成所有设置,请尝试vagrant up.如果一切顺利,您的机器应该启动,它应该复制所有文件.您需要vagrant rsync-auto在终端中运行以使文件保持最新.你会花费一点延迟,但是如果你的页面加载速度提高了30倍,那就值得了!


如果您使用的是PhpStorm,它的自动上传功能甚至比rsync更好.PhpStorm创建了许多临时文件,可以使文件观察者绊倒,但是如果你让它自己处理上传,它就可以很好地工作.


还有一个选择是使用lsyncd.我在Ubuntu主机上使用它取得了很大的成功 - > FreeBSD来宾.我还没有在Windows主机上试过它.


@jpcamara没什么.只有Rsync将其降低到~20ms.您可以在HHVM下运行它,关闭所有调试并运行`artisan optimize`以获得轻微提升.其余的主要是我设计你的应用程序的方式.安装`barryvdh/laravel-debugbar`并寻找任何缓慢.
它如何在20ms内加载280个文件?这里使用了某种编译/ OPcache?假设SSD存储,ofc.

2> majidarif..:

为了帮助您解决问题,我发现这篇博客讨论了如何优化laravel生产.为了使您的应用程序快速运行,您需要做的大部分工作都掌握在您的代码,网络容量,CDN,缓存,数据库的效率方面.

现在我将讨论这个问题:

Laravel开箱即用.有一些方法可以优化它.您还可以选择在代码中使用缓存,从而改进您的服务器机器yadda yadda yadda.但最终Laravel仍然很慢.

Laravel使用了很多symfony库,正如你在techempower的基准测试中看到的那样,symfony的排名非常低(最后可以说是最少).您甚至可以发现laravel 基准测试几乎位于底部.

在后台发生了很多自动加载,甚至可能不需要的东西都会被加载.所以从技术上讲,因为laravel很容易使用,它可以帮助你快速构建应用程序,它也使它变慢.

但我并不是说Laravel很糟糕,很棒,很多很棒.但是,如果您预计会出现大量流量,那么您需要更多硬件来处理请求.它会花费你更多.但如果你是肮脏的富人,那么你可以用Laravel实现任何目标.:d

通常的权衡:

 Easy = Slow, Hard = Fast

我认为C或Java有一个艰难的学习曲线和难以维护,但它在Web框架中排名很高.

虽然不太相关.我只想证明以下几点easy = slow:

红宝石在可维护性和学习它的难易程度有很好的口碑,但它也被认为是Python和PHP中最低如图所示这里.

在此输入图像描述


那些图形与问题有什么关系?

3> 小智..:

我发现使用Laravel 4可以获得最快的速度,你可以选择正确的会话驱动程序;

Sessions "driver" file;

Requests per second:    188.07 [#/sec] (mean)
Time per request:       26.586 [ms] (mean)
Time per request:       5.317 [ms] (mean, across all concurrent requests)


Session "driver" database;

Requests per second:    41.12 [#/sec] (mean)
Time per request:       121.604 [ms] (mean)
Time per request:       24.321 [ms] (mean, across all concurrent requests)

希望有所帮助


@jeveloper是什么?在此示例中,文件比数据库快4倍
@developerbmw他想说的是,如果你有一个负载均衡器和多个实例为你的应用程序提供服务,那么使用本地服务器的文件系统是不可扩展的.

4> Nick..:

是的 - Laravel真的很慢.我为此建立了一个POC应用程序.简单的路由器,带有登录表单.在20美元的数字海洋服务器(几GB GB)上,我只能获得60 RPS和10个并发连接;

建立:

2gb RAM
Php7.0
apache2.4
mysql 5.7
memcached server (for laravel session)

我运行了优化,composer dump autoload等,它实际上将RPS降低到43-ish.

问题是应用程序响应200-400ms.我从本地机器laravel上运行AB测试(即,不通过网络流量); 而我只有112 RPS; 响应时间快200ms,平均300ms.

相比之下,我测试了我的生产PHP Native应用程序,每天在AWS t2.medium上运行几百万个请求(x3,负载平衡).当我从本地机器到通过ELB的25个并发连接时,通过ELB,我得到大约1200 RPS.带有负载的机器与laravel"登录"页面之间的巨大差异.

这些页面包含Sessions(elasticache/memcached),Live DB查找(通过memcached缓存查询),通过CDN提取的资产等等.

我可以说,laravel大约200-300毫秒的东西加载.毕竟,对于PHP生成的视图来说,这种类型的延迟在加载时是可以容忍的.但是,对于使用Ajax/JS处理小更新的PHP视图,它开始感觉迟钝.

我无法想象这个系统在多租户应用程序中会是什么样子,而200个机器人同时抓取100个页面.

Laravel非常适合简单的应用程序.如果您不需要做任何需要中间件废话(IE,没有多租户应用程序和自定义域等)的任何想象,Lumen是可以容忍的;

但是,我从不喜欢从可以绑定的东西开始并为"hello world"帖子导致300ms负载.

如果你在想"谁在乎?"

..编写一个依赖于快速查询的预测搜索,以响应几十万个结果中的自动完成建议.200-300ms的延迟会让你的用户绝对疯狂.


为什么中间件是胡说八道?谨慎解释事实,以便我们所有人都可以断言它是无稽之谈?另外,我运行一个Laravel安装,可以在80到65毫秒之间快速响应(是的,它在40亿个记录表上执行数据库查询)所以我很想知道你在做什么.
你显然喜欢laravel.我设置了基本安装,优化并收到了糟糕的结果.我发现需要中间件和逆向工程来处理前期处理; 这不太理想.只是因为你有"你的"laravel安装来优化,很棒.它无关紧要.一个基本包路由HELLO WORLD比一个简单的路由框架和一个模板模板引擎更重,更慢.可以缓存吗?优化?改进?是.那是关键吗?不,Laravel很重.重是慢的(呃).世界对此表示赞同.如果你愿意,可以使用它,但这不是神学.:)

5> Aggarat .J..:

在我的Hello World比赛中,哪一个是Laravel?我想你可以猜到.我使用了docker容器进行测试,结果如下

要使http响应"Hello World":

Golang与日志处理程序标准输出:6000 rps

带有Log Handler标准输出的SpringBoot:3600 rps

Laravel 5带有关闭日志:230圈


Hello world是有史以来最好,最有用的应用程序,尤其是用于有意义的测试时.它完全涵盖了您需要知道的所有内容,从哪个组件用于打包/打包管理器对语言的支持.
推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有