# php-fpm中进程池（pm.start_servers/pm.min_spare_servers/pm.max_spare_servers）优化

- Link: https://www.xuepaijie.com/html/skill/devops/2014.html
- Published: 2019-04-25T21:14:50+08:00
- Author: Admin

php-fpm进程池开启进程有两种方式，一种是static，即开启固定数量的php-fpm进程。另一种
则是dynamic，启动时开启一定数量的php-fpm进程，当请求量变大时，动态的增加php-fpm进程
数到上限，当空闲时自动释放空闲的进程数到一个下限。这两种不同的执行方式，可以根据
服务器的实际需求来进行调整。

这里主要用到的一些参数，分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers
和pm.max_spare_servers。

pm表示使用那种方式，有两个值可以选择，就是static（静态）或者dynamic（动态）。

pm.max_children：静态方式下开启的php-fpm进程数量，在动态方式下他限定php-fpm的最大
进程数（这里要注意pm.max_spare_servers的值只能小于等于pm.max_children）

pm.min_spare_servers：动态方式空闲状态下的最小php-fpm进程数量。

pm.max_spare_servers：动态方式空闲状态下的最大php-fpm进程数量。

pm.start_servers：动态方式下的起始php-fpm进程数量（不能低于pm.min_spare_servers值，
也不能高于pm.max_spare_servers值）。

**如果dm设置为static，那么其实只有pm.max_children这个参数生效。系统会开启参数设置
数量的php-fpm进程。**

如果dm设置为dynamic，4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers
个php-fpm进程，然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers
之间调整php-fpm进程数。
