我的服务器上有一个nginx + php-fpm的设置。
FPM的池配置如下所示:
[www]
user = root
group = root
listen = /run/php-fpm.sock
listen.owner = root
listen.group = root
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 10s
pm.max_requests = 500
pm.status_path = /server-status
catch_workers_output = yes
我的第一个期望是,除非有传入的请求,否则不会启动子php-fpm
个进程。不幸的是,当我开始php-fpm
时,我立即看到了两个过程:
10 ? S 0:00 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)
37 ? S 0:00 php-fpm: pool www
因此,出于某种原因,一个进程是预先分叉的。
我的第二个期望是所有超过10秒的进程都将被终止。我运行一个测试,导致创建13个进程。大约1分钟后(不再执行请求)大约5个进程空转。为什么会这样?