摘要
php-fpm(fastcgi process manager)是PHP 的FastCGI管理器,管理PHP的FastCGI进程,提升PHP应用的性能和稳定性
php-fpm是一个高性能的php FastCGI管理器,提供了更好的php进程管理方式,可以有效的控制内存和进程,支持平滑重载php配置。PHP-FPM使用FastCGI协议与web服务器(例如:Nginx,Apache)进行通信,采用多进程模型进行处理PHP请求,管理worker进程的生命周期。
当Web服务器接受到一个php请求时,会将该请求转发到php-fpm(可是使用网络地址(IP:端口)或者是一个Unix套接字(socket)文件),PHP-FPM会根据配置文件(php-fpm.conf)中的参数来创建,管理,回收php解释器进程(worker进程)----此过程为进程管理。并将请求法分配给这些worker进程来处理。
接收FastCGI请求的地址
php-fpm.conf配置文件的进程池配置段中设置 listen配置项
php-fpm进程管理
; 选择进程管理器将如何控制子进程的数量。
; 选项:
; static - 静态模式 a fixed number (pm.max_children) of child processes;
; php-fpm进程启动时,会根据px.max_children数量的进程
; dynamic - 动态模式
; 子进程(work)进程的数量是根据以下配置设置的,使用此进程管理,将始终至少有一个子进程
; pm.max_children - 最大子进程(work)数量
; pm.start_servers - php-fpm进程启动时,创建的进程数量
; pm.min_spare_servers - 设置最小空闲子进程数。当空闲进程数少于这个值时,PHP-FPM会创建新的子进程。
; pm.max_spare_servers - 设置最大空闲子进程数。当空闲进程数多于这个值时,PHP-FPM会销毁多余的子进程。
; pm.max_children - the maximum number of children that can
; be alive at the same time.
; pm.start_servers - the number of children created on startup.
; pm.min_spare_servers - the minimum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is less than this
; number then some children will be created.
; pm.max_spare_servers - the maximum number of children in 'idle'
; state (waiting to process). If the number
; of 'idle' processes is greater than this
; number then some children will be killed.
; ondemand - 按需模式:php-fpm启动时不会创建任何worker进程,仅在有请求进来时创建.进程数受限于process.max和pm.max_children
; 当空闲worker进程超过pm.process_idle_timeout时间未处理请求,则会被销毁
; pm.max_children - the maximum number of children that
; can be alive at the same time.
; pm.process_idle_timeout - The number of seconds after which
; an idle process will be killed.
; Note: This value is mandatory.
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don't
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
; Note: This value is mandatory.
pm.max_children = 8; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 20; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 5; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to 'ondemand'
; Default Value: 10s
;pm.process_idle_timeout = 10s;;用于设置每个 PHP-FPM worker 进程在重启之前最大处理的请求数。具体来说,pm.max_requests 控制了每个 PHP-FPM worker 进程在处理了多少个请求后会被自动终止,并且 PHP-FPM 会启动一个新的 worker 进程来接替它继续处理请求。
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
pm.max_requests = 10000