php-fpm 详解及生命周期
php-cgi就是一个遵守CGI协议的CGI程序
同时也就是PHP解释器
标准的CGI每个请求都会解析php.ini,初始化执行环境等,降低性能
每次修改配置之后需要重新php-cgi才能让php.ini生效
不能动态worker调度,只能一开始指定数量的worker
3)FastCGI协议
和CGI一样也是一个协议/规范,不过是再CGI的基础上优化,效率更高
用来提高CGI程序性能的
实现了CGI进程的管理
4)FastCGI程序 = php-fpm
php-fpm就是一个遵守FastCGI协议的FastCGI程序
FastCGI程序对CGI程序的管理模式
启动一个master进程,解析配置文件,初始化环境
启动多个worker子进程
接受到请求之后,传递给woker进程去执行
解决修改php.ini之后平滑重启问题
process_control_timeout:子进程接受主进程复用信号的超时时间(在规定时间内处理完请求,完成不了就不管了)
设定php-fpm留给fastcgi进程响应重启信号的时间
process_control_timeout = 0,也就是不生效,无法保证平滑重启
process_control_timeout设置过大可能导致系统请求堵塞
process_control_timeout =10的情况下,如果代码逻辑需要11s,重启旧可能导致代码执行部分退出
建议值:request_terminate_timeout
重启类型
优雅重启
强制重启