Lamp/Lnmp-在php-fpm.conf中max_requests值如何定义?

Lamp/Lnmp-在php-fpm.conf中max_requests值如何定义?

灵芸 发布于 2017-01-19 字数 180 浏览 1245 回复 1

ubuntu lnmp 2.5G内存 双核心2.4G 日访问量在1万左右 开启40个phpfpm线程 内存占用2100M 那在php-fpm.conf中max_requests值如何定义呢?有没有什么标准的规范,我现在定义为10240.谢谢。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜无邪 2017-05-18 1 楼

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。