php-fpm支持以下几种进程管理方式:
-
dynamic
(动态方式): 根据请求负载动态创建进程,最小进程数由pm.start_servers
配置项决定,最大进程数由pm.max_children
配置项决定。如果请求量过大,则会动态地增加进程数量来处理请求;如果请求量减少,则会关闭一些闲置进程,最终保持pm.min_spare_servers
数量的空闲进程。 -
static
(静态方式): 预先创建指定数量的子进程来处理请求。pm.max_children
决定了子进程的数量,它们会一直存在直到服务重启或者它们自己出错退出。 -
ondemand
(按需方式): 仅在收到请求时才会创建进程。pm.process_idle_timeout
配置项决定了空闲进程的存活时间,超过该时间则会被终止。
php-fpm的底层原理是通过fork出子进程来处理请求,通过与nginx或apache等web服务器通信完成请求的处理和响应。不同的进程管理方式会影响php-fpm的进程创建和维护策略,从而影响系统的性能和资源消耗。