⼀种是直接开启指定数量的php-fpm进程,不再增加或者减少;
pm = static(静态)
pm.max_children:开启的php-fpm进程数量
另⼀种则是开始时开启⼀定数量的php-fpm进程,当请求量变⼤时,动态的增加php-fpm进程数到上限,当空闲时⾃动释放空闲的进程数到⼀个下限。
pm = dynamic(动态)在动态⽅式下他限定php-fpm的最⼤进程数(这⾥要注意pm.max_spare_servers的值只能⼩于等于pm.max_children)pm.max_children:开启的php-fpm进程数量
pm.start_servers:动态⽅式下的起始php-fpm进程数量。
pm.min_spare_servers:动态⽅式空闲状态下的最⼩php-fpm进程数量。pm.max_spare_servers:动态⽅式空闲状态下的最⼤php-fpm进程数量。
如果pm设置为static,系统会开启设置的数量个php-fpm进程。
如果pm设置为dynamic,系统会在php-fpm运⾏开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。
那么,对于服务器,选择哪种执⾏⽅式⽐较好呢?事实上,跟Apache⼀样,运⾏的PHP程序在执⾏完成后,或多或少会有内存泄露的问题。这也是为什么开始时⼀个php-fpm进程只占⽤3M左右内存,运⾏⼀段时间后就会上升到20-30M的原因了。
所以,动态⽅式因为会结束掉多余的进程,可以回收释放⼀些内存,所以推荐在内存较少的服务器或者VPS上使⽤。具体最⼤数量根据 内存/20M 得到。
⽐如说512M的VPS,建议pm.max_spare_servers设置为20(512*0.8/20)。⾄于pm.min_spare_servers,则建议根据服务器的负载情况来设置,⽐较合适的值在5~10之间。
然后对于⽐较⼤内存的服务器来说,设置为静态的话会提⾼效率。
因为频繁开关php-fpm进程也会有时滞,所以内存够⼤的情况下开静态效果会更好。数量也可以根据 内存/30M 得到。⽐如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。⽐如,如果是512M的vps,设置的参数如下:代码⽰例:
pm=dynamic
pm.max_children=20pm.start_servers=5
pm.min_spare_servers=5pm.max_spare_servers=20
可以最⼤的节省内存并提⾼执⾏效率。
因篇幅问题不能全部显示,请点此查看更多更全内容