GO——与PHP的并发对比

背景

go比php可支持的并发数更高,为什么

目标

分析点:

  • 系统的并发瓶颈
  • go语言的并发瓶颈
  • php语言的并发瓶颈
系统并发

参考:https://juejin.cn/post/6844904025553534990

  • 提到并发,我们这里指的是web服务
  • web系统的第一层,是nginx
  • web系统的并发瓶颈一般在DB上
go和php并发对比
  • 语言
    • go是编译性,直接生成可执行的字节码
    • php是解释性,执行时需要动态解析
      • fpm可以设置缓存解析后的字节码
  • 线程与协程
    • fpm是多进程单线程
      • 参考:https://www.jianshu.com/p/3b7aed0a800d
      • 子进程需要资源多
    • go是利用协程提高并发
      • GPM中,P是线程级别的,P调用G,G是协程级别的
      • 图片
  • 切换
    • fpm单进程阻塞之后,内核会去处理其他的,这里是进程切换
    • go的goroutine阻塞之后,P会取寻找其他G来执行,一般不会发生线程切换
  • 内存
    • 一个php-fpm进程占20M
    • go的协程内存是kb级别的

记忆点:fpm进程和gorotine协程,资源消耗、切换、阻塞情况

附录

fpm

参考:https://www.php.cn/php-weizijiaocheng-455614.html

  • php+nginx工作流程
    • nginx接到请求
    • nginx转发给php
    • php的fastcgi的master收到请求
      • cgi只有一个php进程,它读取php.ini的配置,启动,并服务
      • fastcgi
        • 有多个进程,master进程读取配置,启动,后续的worker进程无需再次读取配置
        • master把请求给worker进程
        • worker进程服务
    • nginx并返回
  • fpm是用来管理fastcgi的进程的

相关推荐

  1. RustGo对比

    2024-01-18 12:44:03       16 阅读
  2. Go并发练习题目

    2024-01-18 12:44:03       38 阅读
  3. Go 语言中并发威力

    2024-01-18 12:44:03       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 12:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 12:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 12:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 12:44:03       20 阅读

热门阅读

  1. Android设置夜间模式的主题样式

    2024-01-18 12:44:03       33 阅读
  2. .Net CSRF 跨站点请求伪造漏洞

    2024-01-18 12:44:03       33 阅读
  3. QT基础篇(9)QT5文件及磁盘处理

    2024-01-18 12:44:03       34 阅读
  4. 6.【CPP】Date类的实现

    2024-01-18 12:44:03       32 阅读
  5. 用Python实现给图片去黑边

    2024-01-18 12:44:03       30 阅读
  6. Nginx三种虚拟主机配置

    2024-01-18 12:44:03       33 阅读
  7. Python 语法糖

    2024-01-18 12:44:03       34 阅读
  8. 分布式拒绝服务攻击(DDoS)| 防御 | 监测

    2024-01-18 12:44:03       32 阅读
  9. What is `StringEscapeUtils.escapeHtml4` does?

    2024-01-18 12:44:03       36 阅读
  10. 电脑访问网站受限怎么办

    2024-01-18 12:44:03       41 阅读