Laravel 如何将部分 api 一步步使用 golang 进行重构

2019-04-28 13:44:19 +08:00
 zjtsunshine

目前状况: 1 )有 2 台 8 核 16G 服务器,tps1000 多。

2 )使用 nginx+php-fpm+laravel。

3 ) php-fpm 进程占有的 cpu 较高,经常飙到 80%以上。

目前想一步步地将 laravel 上的 api 接口,逐步使用 golang 重构,并部署到生产环境,但又不影响生产环境功能的正常使用。比如今天先把某个使用频率较高的 api,重构成 golang,部署上去;明天再部署新的 api,一步步操作。

1 )如果使用 Laravel-Swoole 测试了下并发性能确实提到了几十倍,但是有很多坑,怕部署到生产环境出问题。。。

2 )若使用 golang 重构,是要在 nginx 中配置,当请求某个 api 的时候,给他转发到 go 服务器吗?有没有具体的教程,在网上没有找到了的解决方法,有没有大神求助下

8147 次点击
所在节点    程序员
76 条回复
triptipstop
2019-04-29 09:24:26 +08:00
动不动就 Go 的人
换成任何语言 结果都一样
dawniii
2019-04-29 09:53:14 +08:00
@king2014 虽然很吃 cpu 但是不妨碍上生产环境,无非就是堆机器了。 而且大部分项目并发都到不了 100。
qbhy
2019-04-29 09:58:47 +08:00
swoole 挺好,坑都是些现成的。而且大多坑也不是因为 swoole 本身的原因,而是从 fpm 模式转变到类似 node 这种常驻脚本模式带来的问题,或者说 laravel 的设计本就不适合使用这种模式来启动程序,但是也都有相应的解决方案了。我司已经上 swoole
oops1900
2019-04-29 10:16:36 +08:00
两台 2 核 8G 单台机器并发可以轻松扛起 1000+ 并发,采用的是 FPM 工作模式,楼主需要先优化 laravel 框架的一些配置缓存,然后把 FPM 设置成 static 模式,一个进程大概 20 M 你需要根据自己内存设置,然后开启 opcache,优化 nginx,问题不是出在框架上,而且优化上面,laravel 框架是比其他框架加载稍微慢了些,但是也提供了优化配置方案。

按照楼主机器这个配置负载均衡后到 1000 ~ 2000 不是问题
oops1900
2019-04-29 10:18:23 +08:00
另外 laravel-swoole 性能的确显著,不过会有一些坑。楼主可以尝试解决。
fuxiaohei
2019-04-29 10:55:53 +08:00
先优化,实在没办法再换语言
runningman
2019-04-29 11:52:19 +08:00
@tanszhe 好。加群了
jxgccaaron
2019-04-29 12:19:58 +08:00
贵公司还要人么
zjtsunshine
2019-04-29 12:32:23 +08:00
@xiaotianhu 多谢,我们这几天就在测试 swooles,还在兼容一些代码。。。今天服务器爆炸了,紧急加了 2 台 8 核 16G,好蛋疼
raysonlu
2019-04-29 13:21:10 +08:00
@nine 有什么运维上的工作可以优化呢?能否举例一下?
raysonlu
2019-04-29 13:22:15 +08:00
@zjtsunshine 紧急加了 2 台 8 核 16G ?已经是负载均衡了?
jhdxr
2019-04-29 13:31:31 +08:00
虽然 laravel 是很臃肿,但是也没这么夸张吧。你有做 profiling 看过么?
eslizn
2019-04-29 13:56:16 +08:00
与其用不支持协程的 laravel swoole 解决方案,不如考虑下 zend expressive swoole ?
nine
2019-04-29 14:04:28 +08:00
@raysonlu 你先看下 64 楼的吧,我就是按默认该怎么配置怎么配置的,没做什么特殊优化,因为都是早期积累的经验,你问我怎么优化的,我也说不上来,因为默认认为这么配置就行了,反而不知道错误的配置是什么样。
barbery
2019-04-29 14:31:30 +08:00
今年有个活动我们用了 laravel-s 上生产,挺稳定的没啥问题,就是协程的特征没办法用,不过实例可以长连接,在高并发场景还是不错的,省下不少创建连接的消耗,还有就是很省内存,8core16g 机器,跑 16 个 worker,内存占用率只用了 1 个 g
allenhu
2019-04-29 14:43:46 +08:00
不着到问题的根源,下次慢了,继续换?

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

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

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

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

© 2021 V2EX