PHP 部分改造为 go 与全部改造为 go 是否会提升性能?

2023-06-30 15:57:07 +08:00
 dandankele
由于 php-fpm 是以进程为单位提供服务的,大量 php-fpm 进程运行并接收客户端请求,当 php-fpm 极其依赖缓存、数据库等外部服务时,php-fpm 与外部服务之间的网络连接交互也会多,导致网络 IO 频繁,进而导致 php-fpm 进程间的频繁切换问题。这种情况经常在监控上显示为进程的墙钟时间比较大,cpu 消耗时间比较小。

所以在考虑如果用 go 改造的话,使用 go 去连接缓存、数据库等外部服务,php-fpm 充当纯前端 SSR 从 go 那里获取数据渲染页面。那么,在服务器资源配置不变的情况下,请求量与之前不变的情况下,应用性能是否会有所提高?这里主要指 RT 响应时间是否会缩短?

但是我觉得假设改造前是 100 个 fpm 进程,改造后还是 100 个 fpm 进程,并且还要增加一个 go 进程,100 个 fpm 依然要与 go 连接,依然会在 100 个 fpm 进程之间切换进程,所以在资源配置不变的情况下,RT 响应时间应该也不会变化太大吧?
难道需要 go 把 php-fpm 全部替代了?
10871 次点击
所在节点    Go 编程语言
103 条回复
echoZero
2023-07-03 09:28:46 +08:00
如果业务还在持续增长可以考虑迁移,如果业务增长不明显,加机器能解决,就加机器吧。当然也可以可以用微服务的方式去拆一些业务出来使用 golang 重构,这样自己做了有明显的数据对比
ryan961
2023-07-06 11:43:36 +08:00
看到这篇文章刚好想到你的帖子,就顺带过来分享下
https://mp.weixin.qq.com/s/xASk7bjfC-O3lbQ_nccKNA
shi05275
2023-07-14 11:37:38 +08:00
可以这么搞,记得我司之前 PHP 使用到性能瓶颈的时候,就是这么干的,把 redis 、mysql 、zk 之类的连接用 go 连接池化,然后 php-fpm 读本地的 sock 文件,性能提升明显。

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

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

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

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

© 2021 V2EX