美文网首页
PHP-FPM的三种模式和worker进程、master进程详解

PHP-FPM的三种模式和worker进程、master进程详解

作者: 简简天天 | 来源:发表于2019-12-18 16:30 被阅读0次

PHP-FPM的三种模式

(1)pm=static

始终保持固定数量的worker进程数,由pm.max_children决定。


image.png

(2)pm=dynamic

image.png

php-fpm启动时,会初始启动一些worker,初始启动worker数决定于pm.max_children的值。在运行过程中动态调整worker数量,worker的数量受限于pm.max_children配置,同时受限全局配置process.max。

1秒定时器作用,检查空闲worker数量,按照一定策略动态调整worker数量,增加或减少。增加时,worker最大数量<=max_children <=全局process.max;减少时,只有idle >pm.max_spare_servers时才会关闭一个空闲worker。
idle > pm.max_spare_servers,关闭启动时间最长的一个worker,结束本次处理
idle >= pm.max_children,打印WARNING日志,结束本次处理
idle < pm.max_children,计算一个num值,然后启动num个worker,结束本次处理。

优缺点
优点:动态扩容,不浪费系统资源
缺点:如果所有worker都在工作,新的请求到来只能等待master在1秒定时器内再新建一个worker,这时可能最长等待1s

(3)pm=ondemand

php-fpm启动的时候,不会启动任何一个worker,而是按需启动,只有当连接过来的时候才会启动。
启动的最大worker数决定于pm.max_children的值,同时受限全局配置process.max。

1秒定时器作用,如果空闲worker时间超过pm.process_idle_timeout的值(默认值为10s),则关闭该worker。这个机制可能会关闭所有的worker。

优缺点
优点:按流量需求创建,不浪费系统资源
缺点:由于php-fpm是短连接的,所以每次请求都会先建立连接,频繁的创建worker会浪费系统开销。,所以,在大流量的系统上,master进程会变得繁忙,占用系统cpu资源,不适合大流量环境的部署。

pm模式设置在/etc/php-fpm.d文件中

可以看到php7.1的默认pm值为dynamic,pm.max_children值为5


image.png

一个master进程,2个worker进程


image.png

worker的工作流程

image.png

worker进程、master进程详解

kill掉master和worker进程

(1)将pm设置为static,max_children设置为1,重启php-fpm,此时worker进程只有一个


image.png

(2)从浏览器访问服务器上的一个php文件,确保能够访问
(3)kill掉master进程
php7.2版本,centos7,一旦kill掉master进程后,worker进程也挂掉了。

kill 12734

(4)查看

ps aux | grep php-fpm

结论:服务器无法访问php文件

kill掉master进程,留下worker进程

kill -9 master进程号
因为我这时候用的php7.2版本,centos7,无法实现只kill掉master进程,留下worker进程(在其他的版本中是可以实现的,如php7.1)。因为我一旦kill掉master进程后,worker进程也挂掉了。

image.png
可以看到只留下了worker进程,master进程被kill掉了,然后服务器访问php资源,可以访问到。
结论
master只是负责监听管理工作,并不是很多人认为的把客户端发来的请求分给worker进程处理,而是由worker进程负责客户端的请求监听和处理。

kill掉worker进程,留下master进程

kill worker进程号

可以看到一旦kill掉worker进程后,会重启一个新的worker进程。因此客户端请求肯定会得到响应处理。这进一步验证了的上面的结论,master进程负责监听子进程的状态,子进程挂掉之后,会发信号给master进程,然后master进程重新启一个新的worker进程。

相关文章

  • PHP-FPM的三种模式和worker进程、master进程详解

    PHP-FPM的三种模式 (1)pm=static 始终保持固定数量的worker进程数,由pm.max_chil...

  • Nginx的进程模型

    master进程 worker进程 查看进程 ps -ef | grep nginx master、worker进...

  • Nginx安装和管理--nginx系列之三

    nginx安装 master和worker进程 NGINX有一个master进程和一个或多个worker进程。如果...

  • nginx的配置和调优

    优化nginx worker 进程数: Nginx 有 master 和 worker 两种进程,master 进...

  • nginx原理

    1.在nginx启动后,会有一个master进程和多个worker进程,master进程主要用来管理worker进...

  • Nginx处理web请求机制

    Worker抢占机制 master监听80端口,多个worker进程fork master进程。client发送请...

  • php-fpm

    php-fpm说明 php-fpm是FastCGI的实现,并提供进程管理的功能。进程包括master进程和work...

  • Nginx配置文件详解

    1. 模型 master进程: 主进程。监控worker进程。 worker进程: 工作进程。相互独立。与客户端交...

  • spark入门之集群角色

    Master和Worker集群资源管理 Master和WorkerMaster和Worker是Spark的守护进程...

  • nginx-1 初学者入门

    nginx包含一个master进程和多个worker进程。master进程负责读取、执行配置并且管理维护worke...

网友评论

      本文标题:PHP-FPM的三种模式和worker进程、master进程详解

      本文链接:https://www.haomeiwen.com/subject/itlunctx.html