php-fpm.conf中如何定义max_requests值?

max_children=40 , 每个children平均占用20M-30M内存,children越多,可以同时接受的并发数量越多,一般children的值是网站最高并发数+浮动值,这值再×内存占用,就是你需要用到的内存。

max_requests = N 是指当每个children接受了N次请求以后,就会把自己杀死,然后重新建立一个children。

PV / max_children = 每一个children接受的request次数

比如上面的值是1000,而你定义的是10240,那么fpm要超过10天才能杀死children并重建,这样如果存在内存泄露的话,就会导致进程占用过多的内存而无法释放,从而使fpm的处理能力降低,还会产生一些莫名其妙的错误。

但是如果你把这个值设置的过小,fpm频繁的杀死children并重建,也会导致额外的开销。

最好的优化当然是根据你网站的运行情况,去不断的调试,找到一个平衡点。

针对max_children还有一个偷懒的做法,如果你的php是5.3,那么你可以把fpm的style设置为apache-like,这个时候children的数量就由fpm自动控制。相应的配置参数是
start_servers:起始进程数量
min_spare_servers:最小进程数量
max_spare_servers:最大进程数量
当服务器比较空闲的时候,fpm会主动杀死一些多余的children,用来节约资源,当服务器繁忙的时候,服务器会自动建立更多的children。





打赏
zh_CNChinese