PHP-FPM 部分配置说明和调优

221 阅读1分钟

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 最多创建这些worker
      • pm.max_spare_servers 最大空闲进程数
      • pm.min_spare_servers 最小空闲进程数
  • ondemand 模式: pm=ondemand 当有请求需要时才启动
    • 相关参数
      • pm.max_children 最多创建这些worker
      • pm.process_idle_timeout 进程空闲超过这个时间就被杀死

补充参数说明

  • pm.max_children 在静态方式和ondemand模式下其作用
  • pm.max_requests 设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0

安全设置

php-fpm要控制接口对外暴露的范围,防止外部用户能够访问,然后修改配置等危险操作。指令listen.allowed_clients