关于 PHP 并发

little:

没有用数据库的时候,php-fpm 进程数开多少,并发数就能达到多少。跟 CPU 没关系,php 的代码都不是密集运算。
当然,你非要用 php 写出密集运算的来,然后说并发数就是 CPU 核数,那才对

问: 一个进程只能处理一个 request?

答: 对,并发,就是通一瞬间并行处理请求能力,这个意思。一个 php-fpm 自然只能处理一个。但是你要在一台 1G 内存服务器开 2000个 php-fpm,能启动,但是运行不了,并发还是上不去。
和 QPS 有点不一样,QPS 是每秒处理能力。

问: 就假如说我 200 php-fpm, 每个 request 的时间 0. 5 秒, 那我的 QPS 就有 400 ?

答: 并发与时间没有什么关系,你这个例子,如果服务器内存足够的话,并发能力就是200,QPS就是400。当然,还会有长连接、短连接、nginx各个地方的消耗,有点误差。
实际值只会小于理论值..

问: Node 这个高并发怎么算, 和Nginx一样, 都是单线程异步Io模型, 这个并发怎么衡量的

答: 对,异步的,并发就高, 挂起一个线程,闲着,挂起一万个线程,也没屌事, 但是他的QPS,与业务逻辑有关,业务逻辑复杂,框架越庞大,那 QPS就低

问: 就是都挂起,排队执行??

答: 说不定都不执行,就是挂着呢?谁的 io 先回来,先搞定谁, io 不来,都在睡大觉

似乎现在比较的好的都是这种方式,线程异步IO
很多实时通信方案,远程长连接都是这样的,单机挂起十几万很轻松。就是单机并发十几万,都是闲着啊,在内存里占一个资源符而已。

你可能感兴趣的:(关于 PHP 并发)