php-fpm支持三种运行模式,分别为static、ondemand、dynamic,默认为dynamic 。
static: 静态模式,启动时分配固定的worker进程。
ondemand: ondemand: 按需分配,当收到用户请求时fork worker进程,也就是说最初系统不会启动php-fpm进程,当有连接进来时按需启动。
dynamic: 动态模式,启动时分配固定的进程。伴随着请求数增加,在设定的浮动范围调整worker进程
验证

1.static模式

在/usr/local/php/etc/php-fpm.d/aaa.conf里配置运行模式为static,并配置最大开启的进程数为30.如图:
3.php-fpm三种运行模式 - 图1
8.png
重启php-fpm,查看php-fpm进程数量

  1. ps -ef |grep php-fpm

3.php-fpm三种运行模式 - 图2
9.png
可以看到,当配置文件里设置php-fpm的运行方式为static模式时,启动的php-fpm进程数只受pm.max_children 这个参数值的影响,与其他的参数值无关。

2.ondemand模式

修改配置文件aaa.conf,配置为ondemand模式,与其相关的两个参数是pm.max_children 和 pm.process_idle_timeout , pm.process_idle_timeout 表示系统检测到php-fpm进程的空闲时间(秒)达到规定值时就会将其会kill。如下:
3.php-fpm三种运行模式 - 图3
修改完成后启动php-fpm,查看进程数如下:
3.php-fpm三种运行模式 - 图4
11.png
可以看到php-fpm的master启动时,并没有fork出子进程。
通过curl去测试访问

curl 192.168.112.111/test.php

再次查看进程数,可以看到已经有一个php-fpm进程启动。
3.php-fpm三种运行模式 - 图5
12.png
在配置文件里写到php-fpm进程空闲15s后将会被masterkill掉,这里可以等待15s左右再去查看进程数,如下图,可以看到该进程已经被kill掉。
3.php-fpm三种运行模式 - 图6
13.png
动态模式在前文已做验证,这里不再叙述。

作者:冬日大草原的黄昏
链接:https://www.jianshu.com/p/99d478ea1330
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。