乐趣区

关于php:为什么PHP不适合做高并发场景Web业务

php-fpm 中 master 与 worker 工作形式; master 负责 php-cgi 环境以及资源的初始化, 一条申请过去,
间接通过 worker 的 accept 进行监听,接管,解决,返回。

在 php-fpm 的场景下, 一个 Web 申请一个 worker 线程, 用完线程的资源就销毁了。

并发的瓶颈在 io 模型,fpm 是典型的没有复用的多过程模型; 也就是绝对于过程而言, 他能解决的申请是串行的,他是借助多过程来实现并行处理的能力。

即,开了 50 个 fpm 的 worker,就有 50 的并行能力。如果要进步并行能力, 只能关上更多的过程, 然而关上更多的过程即意味着 os 须要有更多的资源去调度这些过程。那就会陷入一个怪圈, 我想进步并发申请量,就必须开更多过程,然而节约了更多的资源去调度过程,然而机器的性能是无限的,把资源节约在调度上,反而没有资源解决业务。

所以,php-fpm 的工作模型才是问题。

退出移动版