采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
nginx的master-worker多进程模型,请求是会被当作一个事件放入到队列中,worker进程会消耗这个队列处理请求,这样并发量就会更高,不会一个worker进程只处理一个请求。php-fpm也是采用的master-worker,从课程中看出,php-fpm似乎是一个进程同时只能处理一个请求。不知道理解上面存在错误吗?
同学您好, 你提到的nginx的worker同时处理多个请求,是指的I/O多路复用吧? 比如在支持epoll的操作系统下,nginx用了epoll来同时处理多个请求。 是指的这个意思吧?
那么对于php-fpm同样也用了I/O多路复用,一个worker的fpm也可以同时处理多个请求,在支持poll的操作系统下使用的是poll,可以gdb -p pid (其中pid是某一个worker角色的fpm的pid),在poll处打一个断点,如下:
同样也是可以同时处理多个请求的。 课程里面提到的意思是多个worker会通过抢锁获取一个请求进行处理。
poll和select感觉差不多,为什么不采用epoll呢,好奇怪
登录后可查看更多问答,登录/注册
高级工程师的核心能力-阅读源码,课程由浅入深掌握PHP7源码
757 6
997 6
918 5
1.0k 5
877 5