php-fpm
FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。
平滑重启
可以使用命令 php-fpm reload
或者 kill -USR2 [php-fpm master id]
,其实前者也是对后者的封装.
注意: process_controll_timeout
参数默认为0,但是如果想要平滑重启,需要将其设置为大于0,防止正在处理的旧进程被直接杀死
进程管理配置
独立进程池配置三种方式
- 静态方式:
pm=static
- 相关参数
pm.max_children
初始化创建这些worker
- 相关参数
- 动态方式:
pm=dynamic
- 相关参数
pm.start_servers
初始化进程数(默认值min_spare_servers + (max_spare_servers - min_spare_servers) / 2
)pm.max_children
最多创建这些workerpm.max_spare_servers
最大空闲进程数pm.min_spare_servers
最小空闲进程数
- 相关参数
- ondemand 模式:
pm=ondemand
当有请求需要时才启动- 相关参数
pm.max_children
最多创建这些workerpm.process_idle_timeout
进程空闲超过这个时间就被杀死
- 相关参数
补充参数说明
pm.max_children
在静态方式和ondemand模式下其作用pm.max_requests
设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0
安全设置
php-fpm要控制接口对外暴露的范围,防止外部用户能够访问,然后修改配置等危险操作。指令listen.allowed_clients