PHP+FPM导致内存耗光的问题
2013-11-28 19:34
423 查看
转载:http://blog.sina.com.cn/s/blog_40e8378d0100pojm.html
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的使用率飙升,系统负载巨大,所以还是平衡上面的数据比较重要。
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的使用率飙升,系统负载巨大,所以还是平衡上面的数据比较重要。
Mar 08 16:13:33.113138 [NOTICE] fpm_got_signal(), line 48: received SIGCHLD
Mar 08 16:13:33.113202 [WARNING] fpm_children_bury(), line 215: child 23051 (pool default) exited on signal 11 SIGSEGV after 747.428492 seconds from start
Mar 08 16:13:33.113622 [NOTICE] fpm_children_make(), line 352: child 24511 (pool default) started
相关文章推荐
- PHP+FPM导致内存耗光的问题
- PHP+FPM导致内存耗光的问题
- 解决Linux下php-fpm进程过多导致内存耗尽问题
- php-fpm内存占满的问题
- 如何解决PHP+FPM导致内存耗光的问题
- 记录一下xcache导致的php-fpm 502问题
- PHP 大图片操作导致内存崩溃及超时的问题
- 解决PHP加速器eAccelerator导致php-cgi占用内存过多的问题
- 避免PHP-FPM内存泄漏导致内存耗尽
- PHP 4.4.0发布 修复导致内存崩溃问题
- php-fpm进程太多,内存耗尽问题排查
- 避免 php-fpm 耗尽内存导致宕机
- php-fpm设置问题导致网站无法访问
- 记录一下xcache导致的php-fpm 502问题
- 解决WordPress被利用xmlrpc.php导致VPS CPU内存占用过高问题
- 导致内存溢出的原因有哪些?内存溢出问题又如何解决
- php5.1x的时区问题导致相差八个小时!
- Win7下IE 8内存保护可能导致ActiveX无法安装的问题及其解决方法
- 【iOS自动约束】使用Masonry导致内存持续增长问题分析
- 频繁分配释放内存导致的性能问题的分析