GO——与PHP的并发对比

背景

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

目标

分析点:

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

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

  • 提到并发,我们这里指的是web服务
  • web系统的第一层,是nginx
  • web系统的并发瓶颈一般在DB上
go和php并发对比
  • 语言
    • go是编译性,直接生成可执行的字节码
    • php是解释性,执行时需要动态解析
      • fpm可以设置缓存解析后的字节码
  • 线程与协程
    • fpm是多进程单线程
    • 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的进程的
相关推荐
daxiangxm17 分钟前
GEO策略:让AI直接引用你的内容
开发语言·团队开发·运维开发·个人开发·数据库开发
泡海椒28 分钟前
JQuick-Excel 实战:用 VALIDATION 建立可维护的 Excel 导入校验
开发语言·python·excel
longlongzihan31 分钟前
前缀积与后缀积 —— LeetCode 238. 除了自身以外数组的乘积
开发语言·c++·leetcode
Duang007_32 分钟前
生产可观测性:从“系统慢“到“根因“的完整链路(Go / TypeScript)
后端·python·golang·typescript·prometheus
szial1 小时前
JavaScript 的 call、apply 和 bind:如何控制函数调用
开发语言·前端·javascript
weixin_307779131 小时前
C++代码实现MATLAB中的cvpartition函数功能
开发语言·c++·算法·matlab
黑妹天下第一乖1 小时前
小智改造实战解读-首 token 延迟去哪了:云端与端侧大模型的分段对照
开发语言·人工智能·python·嵌入式硬件·自然语言处理·iot
。小二1 小时前
Go 泛型并发利刃:async 库深度评测——370K ops/s、零依赖、生产就绪
开发语言·javascript·golang
(Charon)1 小时前
【C++面试】线程同步机制:互斥锁、条件变量、原子操作与读写锁
开发语言·c++·算法·面试
CV工程师丁Sir1 小时前
ArkWeb 手记 06|window.open 与页面跳转拦截
开发语言·php·harmonyos