Laravel 部署:PHP-fpm 配置调优
php-fpm 进程数调优
介绍
使用 ps aux|grep php-fpm
查看 php-fpm 进程,可以看到有三个子进程。
root@example:/# ps aux|grep php-fpm
root 574 0.0 0.0 463668 104 ? Ss Jun16 0:49 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data 5320 0.7 2.5 475660 25248 ? S 00:27 6:41 php-fpm: pool www
www-data 5321 0.7 2.6 475784 26312 ? S 00:27 6:37 php-fpm: pool www
www-data 9412 0.7 2.5 474632 26156 ? S 14:04 0:41 php-fpm: pool www
root 11647 0.0 0.1 16148 1040 pts/0 S+ 15:33 0:00 grep --color=auto php-fpm
进程数是由 / etc/php/7.2/fpm/pool.d/www.conf
指定的:
- pm = dynamic:子进程的数量是根据以下指令来动态生成的:
pm.max_children
,pm.start_servers
,pm.min_spare_servers
,pm.max_spare_servers
. - pm = ondemand:在服务启动的时候根据
pm.start_servers
指令生成进程,而非动态生成。 - pm = static:子进程的数量是由
pm.max_children
指令来确定的。
安装好,默认是
pm = dynamic
,
如果您的服务器内存小,可以默认就好,大内存服务器则可以设置为 pm = static
,然后 pm.max_children
数量根据服务器的内存来决定,这样就可以最大化你的服务器负载能力。
如何配置
环境
- Ubuntu 18.04 LTS
- PHP 7.2
这边示例,调为 10个:
`pm.max_children = 10
设置好重启 php-fpm:
sudo systemctl restart php7.2-fpm
最后看下是否成功:
root@example:~# ps aux|grep php-fpm
root 12241 0.6 1.3 464160 27792 ? Ss 21:50 0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data 12259 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12260 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12261 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12263 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12264 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12265 0.0 0.6 466460 14152 ? S 21:50 0:00 php-fpm: pool www
www-data 12267 0.0 0.6 466460 14156 ? S 21:50 0:00 php-fpm: pool www
www-data 12268 0.0 0.6 466460 14156 ? S 21:50 0:00 php-fpm: pool www
www-data 12269 0.0 0.6 466460 14156 ? S 21:50 0:00 php-fpm: pool www
www-data 12270 0.0 0.6 466460 14156 ? S 21:50 0:00 php-fpm: pool www
root 12276 0.0 0.0 14428 1028 pts/1 S+ 21:50 0:00 grep --color=auto php-fpm
参见
更多详细信息可以查看 PHP-FPM 调优:使用 ‘pm static’ 来最大化你的服务器负载能力