V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dandankele
V2EX  ›  Go 编程语言

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

  •  1
     
  •   dandankele · 314 天前 · 8864 次点击
    这是一个创建于 314 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于 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
    1  2  
    echoZero
        101
    echoZero  
       311 天前
    如果业务还在持续增长可以考虑迁移,如果业务增长不明显,加机器能解决,就加机器吧。当然也可以可以用微服务的方式去拆一些业务出来使用 golang 重构,这样自己做了有明显的数据对比
    ryalu
        102
    ryalu  
       308 天前
    看到这篇文章刚好想到你的帖子,就顺带过来分享下
    https://mp.weixin.qq.com/s/xASk7bjfC-O3lbQ_nccKNA
    shi05275
        103
    shi05275  
       300 天前
    可以这么搞,记得我司之前 PHP 使用到性能瓶颈的时候,就是这么干的,把 redis 、mysql 、zk 之类的连接用 go 连接池化,然后 php-fpm 读本地的 sock 文件,性能提升明显。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1454 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:45 · PVG 07:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.