以下为官方文档内容:
pm string 设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。 static - 子进程的数量是固定的(pm.max_children)。 ondemand - 进程在有需求时才产生(当请求时才启动。与 dynamic 相反,在服务启动时 pm.start_servers 就启动了。 dynamic - 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。 pm.max_children int pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。 该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients 的设置和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 环境变量。 pm.start_servers in 设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。 pm.min_spare_servers int 设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。 pm.max_spare_servers int 设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。 pm.process_idle_timeout mixed 秒数,多久之后结束空闲进程。 仅当设置 pm 为 ondemand。 可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:10s。 pm.max_requests int 设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值:0
php-fpm
是一个多进程单线程的模型
每个fpm平均大概占用内存20到30mb 那么机器支持最高的fpm数量公式如下:fpm数量 = 机器内存 * 1024M * 0.8 / 30 (20)
乘以0.8 是为服务器留出一点内存,处理其他业务
例如: 一个4G内存服务器
4 * 1024 * 0.8 / 30 约等于 109 个 FPM 进程数
那么如果 pm = static 则 pm.max_children = 109 静态,始终保持一个固定数量的子进程 pm = ondemand 进程在有需求时才产生,在持续闲置了pm.process_idle_timeout秒后就会被杀掉, 弊端是,遇到高峰期或者如果pm.process_idle_timeout的值太短的话,无法避免服务器频繁创建进程的问题 pm = dynamic pm.max_children = 109 pm.start_servers = 55 (默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2 ) 启动时,会产生固定数量的子进程(由pm.start_servers控制)可以理解成最小子进程数,而最大子进程数则由pm.max_children去控制 pm.min_spare_servers = 10 设置空闲服务进程的最低数目 pm.max_spare_servers = 100 设置空闲服务进程的最大数目
心情不错~~~