这是一个创建于 318 天前的主题,其中的信息可能已经有所发展或是发生改变。
由于 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 全部替代了?
103 条回复 • 2023-07-14 11:37:38 +08:00
|
|
101
echoZero 315 天前
如果业务还在持续增长可以考虑迁移,如果业务增长不明显,加机器能解决,就加机器吧。当然也可以可以用微服务的方式去拆一些业务出来使用 golang 重构,这样自己做了有明显的数据对比
|
|
|
103
shi05275 304 天前
可以这么搞,记得我司之前 PHP 使用到性能瓶颈的时候,就是这么干的,把 redis 、mysql 、zk 之类的连接用 go 连接池化,然后 php-fpm 读本地的 sock 文件,性能提升明显。
|