PHP-FPM 服务配置进程管理器pm

2015-02-26 0 By admin

PHP-FPM配置文件中设置工作进程的工作方式;常用的工作方式分为动态模式和静态模式。

1、pm = dynamic

设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。必须设置。
static(静态) – 子进程的数量是固定的(pm.max_children)。
ondemand – 启动时没有worker进程创建,当有连接时才会创建worker进程。
dynamic(动态) – 子进程的数量在下面配置的基础上动态设置:

2、pm.max_children = 5

pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。
该选项设置可以同时提供服务的请求数限制

3、pm.start_servers = 2

设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用
默认值:min_spare_servers + (max_spare_servers – min_spare_servers) / 2。

4、pm.min_spare_servers = 1

设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置

5、pm.max_spare_servers = 3

设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

一、静态工作模式

对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。
数量也可以根据 内存/30M 得到,比如8GB内存可以设置为100,那么php-fpm耗费的内存就能控制在 2G-3G的样子。
如果内存稍微小点,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。
对于小内存的服务器来说,比如256M内存的VPS,即使按照一个20M的内存量来算,10个php-cgi进程就将耗掉200M内存,那系统的崩溃就应该很正常了。因此应该尽量地控制php-fpm进程的数量,大体明确其他应用占用的内存后,给它指定一个静态的小数量,会让系统更加平稳一些。

二、动态工作模式

或者使用动态方式,因为动态方式会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。