php-fpm 进程数 20,那么就意味着 20 个请求可以同时处理吗?
如果一台机器 php-fpm 进程数 20,那么就意味着 20 个请求可以同时处理吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如果一台机器 php-fpm 进程数 20,那么就意味着 20 个请求可以同时处理吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
进程上限设为20,就意味着同时只能处理20个请求。之后的请求会进行排队,这个排队由fpm主进程完成,nginx采用的是异步IO模型,不会产生阻塞。
答
原因
PHP-FPM
采用master/worker
多进程架构。即:众多的
worker
进程组成了进程池,等待master
进程分配任务,而且每个worker
进程只能同时处理单个任务,前一个处理结束,才能为下一个服务。FPM 配置
参考:FPM 配置
按对子进程的管理类型,可通过不同的配置调整
worker
进程数:static - 子进程的数量是固定的(pm.max_children)
ondemand - 进程在有需求时才产生(当请求时,与 dynamic 相反,pm.start_servers 在服务启动时即启动
dynamic - 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers
相关的 Zend 源码
版本:
PHP-5.6
文件位置:
vim sapi/fpm/fpm/fpm.c +93
从
fpm_run
方法中,也可以看出只给每个空闲的子进程分配一个请求任务。参考:PHP-FPM运行原理
替代方案
FPM
只是PHP
官方实现的fast-cgi
进程管理器。对应的也有一些替代的方案,比如:采用异步非阻塞多进程模型的
swoole-http-server
参考:swoole-http-server
其他
当然,在现实使用场景中,要根据实际需求来做技术选型。
没明白你说的什么意思
刚刚看到不好意思,这个的意思是同时处理20个请求 直到有某个请求处理完才会有新的请求进来