参考链接
[global] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 daemonize = no
[some_pool] 在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ; FPM 进程运行的Unix用户。必须设置 user = _www ; FPM 进程运行的 Unix 用户组。如果不设置,就使用默认用户的用户组 group = _www ; 设置接受 FastCGI 请求的地址 listen = 127.0.0.1:9001 ; 设置 listen(2) 的 backlog 最大值。“-1”表示无限制。默认值:-1 ;listen.backlog = 511 ; 设置允许连接到 FastCGI 的服务器 IPV4 地址。等同于 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS 环境变量。仅对 TCP 监听起作用。每个地址是用逗号分隔,如果没有设置或者为空,则允许任何服务器请求连接。默认值:any。 PHP 5.5.20 和 5.6.4起,开始支持 IPv6 地址 ;listen.allowed_clients = 127.0.0.1 ; 设置 worker 的 nice(2)优先级(如果设置了的话)。 该值从 -19(最高优先级) 到 20(更低优先级)。 默认值:不设置 ; process.priority = -19 ; 设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic pm = dynamic ; pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置 pm.max_children = 5 ; 设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2 pm.start_servers = 2 ; 设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置 pm.min_spare_servers = 1 ; 设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置 pm.max_spare_servers = 3 ; 秒数,多久之后结束空闲进程。 仅当设置 pm 为 ondemand ;pm.process_idle_timeout = 10s; ; 设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0 ;pm.max_requests = 500 ; FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无 ;pm.status_path = /status ; FPM 监控页面的 ping 网址。如果没有设置,则无法访问 ping 页面。该页面用于外部检测 FPM 是否存活并且可以响应请求。请注意必须以斜线开头(/) ;ping.path = /ping ; 用于定义 ping 请求的返回响应。返回为 HTTP 200 的 text/plain 格式文本。默认值:pong ;ping.response = pong ; Access log 文件。 默认值:不设置 ;access.log = log/$pool .access.log ; access log 的格式。 默认值: "%R - %u %t \"%m %r\" %s" ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" ; 慢请求的记录日志。默认值:#INSTALL_PREFIX#/log/php-fpm.log.slow ;slowlog = log/$pool .log.slow ; 当一个请求该设置的超时时间后,就会将对应的 PHP 调用堆栈信息完整写入到慢日志中。设置为 '0' 表示 'Off' 。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭) ;request_slowlog_timeout = 0 ; Depth of slow log stack trace. ; Default Value: 20 ;request_slowlog_trace_depth = 20 ; 设置单个请求的超时中止时间。该选项可能会对 php.ini 设置中的 'max_execution_time' 因为某些特殊原因没有中止运行的脚本有用。设置为 '0' 表示 'Off' 。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭) ;request_terminate_timeout = 0 ; 设置文件打开描述符的 rlimit 限制。默认值:系统定义值 ;rlimit_files = 1024 ; 设置核心 rlimit 最大限制值。可用值:'unlimited' ,0 或者正整数。默认值:系统定义值 ;rlimit_core = 0 ; 启动时的 Chroot 目录。所定义的目录需要是绝对路径。如果没有设置,则 chroot 不被使用 ;chroot = ; 设置启动目录,启动时会自动 Chdir 到该目录。所定义的目录需要是绝对路径。默认值:当前目录,或者根目录(chroot时) ;chdir = /var/www ; 重定向运行过程中的 stdout 和 stderr 到主要的错误日志文件中。如果没有设置,stdout 和 stderr 将会根据 FastCGI 的规则被重定向到 /dev/null 。默认值:无 ;catch_workers_output = yes ; Decorate worker output with prefix and suffix containing information about ; the child that writes to the log and if stdout or stderr is used as well as ; log level and time. This options is used only if catch_workers_output is yes . ; Settings to "no" will output data as written to the stdout or stderr. ; Default value: yes ;decorate_workers_output = no ; 为 FPM worker 进程清除环境变量。 在进程池配置文件里设置环境变量前,阻止任意系统的环境变量进入 FPM worker 进程。 自 PHP 5.4.27、 5.5.11 和 5.6.0 起。 默认值: Yes ;clear_env = no
小结 进程池 php-fpm 的主进程可以管理多个进程池,每个进程池相互独立。
进程池与 Nginx 可通过 TCP 或 Unix Socket 通信;Nginx 与 php 运行在不同机器时采用 TCP 通信的方式。
max_requests 相关 为了验证 max_requests 的作用,作如下设置
1 2 3 pm = staticpm.max_children = 1 pm.max_requests = 2
重启 php-fpm,主进程[76227] 创建了子进程[76228];处理第二次请求后,子进程[76228] 退出,新的子进程[76237] 启动。
max_requests 是设置为 0 时,子进程将一直接受请求。