Laravel 到底能慢到什么程度?

2018-01-04 19:25:46 +08:00
 Tairy

上半年把公司的项目用 Laravel 重构了一把,下半年流量大了之后线上 CPU 狂报警,网上都说 Laravel 慢的不行,求问有经验的大神,Larvael 到底能慢到什么程度,心里好有点谱。

感觉又要重构了,😭😭😭!

29433 次点击
所在节点    PHP
91 条回复
kkeiko
2018-01-05 10:34:47 +08:00
@kkeiko 顺便给个建议,如果是小项目,维护的人不多, 放弃 laravel 吧,得不偿失。yaf 是最好的选择。
keikeizhang
2018-01-05 10:37:19 +08:00
Yaf 你最佳的选择

或者直接 JAVA

我们公司用 Lumen 开发 API
kimmykuang
2018-01-05 11:03:49 +08:00
不要用 fpm 模式啊
st2udio
2018-01-05 11:24:22 +08:00
我上次开了 800 个 fpm 进程,跑 laravel
YMB
2018-01-05 11:33:55 +08:00
你们没管架构的吗。。。组长。。总监之类的。。。
模块化啊。。模块间 API 通讯。。无敌的。。
阿里有些架构就这么干的。。
Tairy
2018-01-05 11:45:04 +08:00
@st2udio 我们之前 1200 发现 cpu 很容易爆,就改到 800, 基本上最合适了吧。
Tairy
2018-01-05 11:45:32 +08:00
@YMB 小公司哪有这些。
sampeng
2018-01-05 13:42:11 +08:00
加机器啊。。。。。能用机器解决的问题。干嘛用人来解决。程序员一年工资 10-30 万。一台机器一年才多少钱。。。
HYSS
2018-01-05 14:53:04 +08:00
@Veigar 你没算数据库吧
wekw
2018-01-05 15:19:28 +08:00
@Fishdrowned 老实说你的回复是这么多回复中最没价值的,因为一看你就没用你所说的这个架构做过任何一个生产环境的项目。用过 phalcon 的人都会吐血的。
zzWinD
2018-01-05 16:17:07 +08:00
@Veigar 讲道理我本机测试了一下 Go 的 gin 也就 300 qps。 配置是 i3 8g。可能是我打开的方式不对。。
YMB
2018-01-05 16:33:26 +08:00
@Tairy 刚刚搜了下,http://ifeve.com/talk-arch-module/ 貌似这文章作者也是阿里那边的。
就是系统解耦,按模块分割,每个模块可以高度扩展,扩展力很强,每个模块间以一种私有协议通讯,每个模块可以再无限分布式
jswh
2018-01-05 16:47:35 +08:00
xhprof 需要配合他自带的那个分析工具看。里面会显示出来每个函数的调用次数和总时间分配,一层层看下去就知道哪里慢了
puritania
2018-01-05 17:35:01 +08:00
Larvael 慢没得洗,在微服务这么流行的现在,框架带来的作用越来越小了。
zhujiulin
2018-01-05 19:28:58 +08:00
你确定是 laravel 的锅? 一般 php 很少出问题,mysql io 网络依赖会导致 php 进程一直挂着释放不了
0x8C
2018-01-05 19:29:36 +08:00
换 php7.2.1 试试,可能是 7.2.0 的 opcache 类型推论引起的性能问题
Fishdrowned
2018-01-05 22:38:29 +08:00
@wekw 这个框架就是在生产环境中一步步提炼出来的,最后才开源,虽然没什么人用,请你不要张口就就喷没价值。
Veigar
2018-01-06 00:40:10 +08:00
@HYSS 用的 redis 当数据库
abccccabc
2018-01-09 09:26:29 +08:00
@wekw 你好,在用 phalcon 框架中,你觉得整体速度不会太快,会是出在哪个地方呢? Yaf 的功能过于简单,要 composer 数据库类、助手类、其它要用到的类,好累呀。

@Tairy 你有查过 php 慢日志没?既然出现了性能问题,这个是要重点分析的。
sagaxu
2018-01-09 13:43:38 +08:00
ab 测的是等价的逻辑吗? Document Length 分别是 14B, 10B, 103B
Laravel 的 session 之类的重开销的 Middleware 都禁用了吗?
另外,Laravel 中路由有多少个?

我用 lumen + php 7.1 测过,Laravel 的 echo time();
在 i5 的机器上,2 个路由的时候,QPS 能跑 5000 左右。
路由数量 100 的时候,QPS 下降到 4000 左右。
路由数量 1000 的时候,QPS 下降到 1100+。
如果用了 1000 个正则做路由,我相信还会更慢。

当我用 100 路由,再开启 session 的时候,QPS 从 4000 左右跌到了 1500+,腰斩了有没有?随便再引入几条正则路由,再开几个 Middleware,那 QPS 估计就跟楼主那个一样了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/420124

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX