CLI模式生命周期 FPM的三种模式

本文介绍了PHP-FPM的生命周期,包括php_module_startup、php_request_startup、php_execute_script和php_request_shutdown等阶段。同时,详细阐述了静态、动态和按需(on-demand)三种管理模式的工作原理和配置参数。此外,还提到了使用SIGUSR1和SIGUSR2信号对PHP-FPM进行日志重定向和平滑重载。最后,通过实例展示了如何通过调整配置和发送信号影响PHP-FPM的服务状态。

CLI声明周期

php_module_startup 模块初始化

php_request_startup  请求初始化

php_execute_script  读取php代码进行语法解析->ast抽象语法树->opcode->执行得到对应结果

php_request_shutdown 请求关闭

php_module_shutdown 模块关闭

 

 

1.static模式

static模式始终会保持一个固定数量的子进程,这个数量由pm.max_children定义。

 

2.dynamic模式

子进程的数量是动态变化的,启动时,会生成固定数量的子进程,可以理解成最小子进程数,通过pm.start_servers控制,而最大子进程数则由pm.max_children控制,子进程数会在pm.start_servers~pm.max_children范围内波动,另外,闲置的子进程数还可以由pm.min_spare_servers和pm.max_spare_servers两个配置参数控制。换句话说,闲置的子进程也可以由最小数目和最大数目,而如果闲置的子进程超过pm.max_spare_servers,则会被杀掉。

 

3.ondemand模式

这种模式和dynamic模式相反,把内存放在第一位,每个闲置进程在持续闲置了pm.process_idle_timeout秒后就会被杀掉。有了这个模式,到了服务器低峰期,内存自然会降下来,如果服务器长时间没有请求,就只有一个主进程,当然其弊端是,遇到高峰期或者pm.process_idle_timeout设置太小,无法避免服务器频繁创建进程的问题。

 

 

kill SIGUSR1 php-fpm 重新打开日志文件(释放旧的文件句柄,打开新的文件句柄 ) 可用于日志切割

 

 

 

kill SIGUSR2 php-fpm 平滑重载所有worker进程且重新载入配置文件还有二进制模块

 

 

修改 fpm 将 pm设置为static 且pm.max_children = 1

 

查看到php-fpm

 

➜  nginx ps aux|grep php-fpm
root      43490  0.0  0.2 150564  2596 ?        Ss   15:34   0:00 php-fpm: master process (/home/Desktop/data/php/php-7.1.0-debug/php-7.1.0/output/etc/php-fpm.conf)
nobody    43491  0.0  0.3 152848  3484 ?        S    15:34   0:00 php-fpm: pool www

 

 

kill 43490 结果不能服务 web访问 520 Bad Gateway

 

 

kill -9 43490 此命令 只杀掉master worker进程还在。所以还能服务 master进程不负责请求,只负责重启worker等工作

 

 

kill 43491 还能服务,master会启动另外一个worker进程来服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值