2880045 发表于 2014-5-4 21:32:30

php-fpm.conf中pm.max_requests设置多少合适?

我用的军哥LNMP 服务器8G内存 我把PHP进程设置为100结果内存很快就跑满了,按理说应该是每个进程最大占用20 30M内存 100个应该占用2000-3000M内存 结果一下子用了5-6G。
然后我百度了一下发现有提到pm.max_requests这个参数,军哥上的php-fpm.conf没有这个参数,我自己添加上了,网站PV大概40-50W 服务器内存8G但是具体不知道设置多少合适。
nginx php-fpm配置过程中最大问题是内泄漏出问题:服务器的负载不大,但是内存占用迅速增加,很快吃掉内存接着开始吃交换分区,系统很快挂掉!
google了一天,终于发现些有用的东西,其实根据官方的介绍,php-cgi不存在内存泄漏,每个请求完成后php-cgi会回收内存,但是不会释放给操作系统,这样就会导致大量内存被php-cgi占用。
官方的解决办法是降低PHP_FCGI_MAX_REQUESTS的值,我用的是php-fpm,对应的php-fpm.conf中的就是max_requests,该值的意思是发送多少个请求后会重启该线程,我们需要适当降低这个值,用以让php-fpm自动的释放内存,不是大部分网上说的51200等等,实际上还有另一个跟它有关联的值max_children,这个是每次php-fpm会建立多少个进程,这样实际上的内存消耗是max_children*max_requests*每个请求使用内存,根据这个我们可以预估一下内存的使用情况,就不用再写脚本去kill了。
下面其实是重启脚本的过程,并不是什么很严重的事情,但是我们要小心,不是说一直重启就是好的,因为重启会导致cpu的使用率飙升,系统负载巨大,所以还是平衡上面的数据比较重要。

2880045 发表于 2014-5-6 13:02:42

有时候自动释放内存有时候不释放
页: [1]
查看完整版本: php-fpm.conf中pm.max_requests设置多少合适?