PHP-FPM的PM配置参数说明

在配置PHP-FPM时,下面几个主要设置参数对系统性能影响比较大,网上很多文章只简要列出了基础描述,没有进一步的说明或举例,所以许多新手同学在实际配置的时候还是会有困惑,常常是一知半解。当然了,你也可以配置成static后max_children一招打天下,但是在有些场景下理解这些参数的意义还是很有帮助的。

首先,当我们将pm参数设置为dynamic时,以下4个参数都是生效的,他们各自影响系统发挥的不同方面,下面给出我对他们的理解,并且在预设的参数值下举些例子,希望对大家有所帮助。

pm.max_children = 32
该参数决定了同时存在的最大进程数,包括空闲和非空闲进程,是影响最大负载的决定性参数,决定了服务器的最大承载能力。当然也不是越大越好,所谓物极必反,要根据CPU核数和内存大小来灵活设定。 
一般情况下,每个children大约消耗几十M的内存,我们可以根据内存数算出最多可以设置多少个进程,大约不要超过80%总内存即可,同时也要考虑服务器是否有其它服务在运行。
其次,要看看服务的类型,如果服务以计算为主时,则设置不要超过CPU核数,如果是非计算为主时可以多设置一些,但也要考虑内存的使用情况。

pm.start_servers = 15
该参数决定了启动时的进程数,原则上介于min_spare_servers和max_spare_servers之间,这个参数对系统性能影响不大,只影响启动时的同时承载能力,如果一上来就是大并发,那可以设置大点。

pm.min_spare_servers = 10
该参数是设置最小空闲进程,它影响的是突发响应能力,同时它也是决定了系统的最小进程数。
以上面的设置举例,如果当前产生了5个并发,那系统就会最少同时存在5+10=15个进程。为什么说是最少,因为当前空闲进程可能会有10到20个,如果达不到则补足,超过则不用新增。

pm.max_spare_servers = 20
该参数设置最大空闲进程。
以极端情况举例,系统在经历最大负载后降低为0负载,那么这时如果没有其它特殊情况的话,进程数将会从max_children的32减少到max_spare_servers的20,而不是min_spare_servers的10。
结合上面的说明,也就是说min_spare_servers影响并发增加时的空闲进程数,max_spare_servers影响并发减少时的空闲进程数。
那是不是说如果进程超过max_spare_servers后就不会减少了呢?其实在大多数情况下确实是这样的,但是当有些情况下,比如达到max_requests后进程被Kill掉,或其它情况被终止,这时进程数就会小于max_spare_servers的情形,但是最小值不会小于min_spare_servers。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值