教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 避免PHP-FPM内存泄漏导致内存耗尽

避免PHP-FPM内存泄漏导致内存耗尽

发布时间:2017-10-25   编辑:jiaochengji.com
教程集为您提供避免PHP-FPM内存泄漏导致内存耗尽等资源,欢迎您收藏本站,我们将为您提供最新的避免PHP-FPM内存泄漏导致内存耗尽资源

对于PHP-FPM多进程的模式,想要避免内存泄漏问题很简单,就是要让PHP-CGI在处理一定数量进程后退出即可。
否则PHP程序或第三方模块(如Imagemagick扩展)导致的内存泄漏问题会导致内存耗尽或不足。
php-fpm.conf中有相关配置:
#请自行按需求配置

pm.max_requests = 1024

实际上还有另一个跟它有关联的值max_children,这个是每次php-fpm会建立多少个进程,这样实际上的内存消耗是max_children*max_requests*每个请求使用内存。

另外一些粗暴的方法包括建立cron kill掉占用内存过多的php-cgi,


1.检查php进程的内存占用,杀掉内存使用超额的进程

一般情况下,如果php-cgi进程占用超过1%的内存,就得考虑一下是否要杀掉它了。因为普通情况下,php-cgi进程一般占用0.2%或以下。

这里提供一个脚本供各位使用,就是放在cron任务里,每分钟执行一次。

使用crontab -e 命令,然后添加如下调度任务

* * * * * /bin/bash /usr/local/script/kill_php_cgi.sh

kill_php_cgi.sh脚本如下

#!/bin/sh
#如果是要杀掉php-fpm的进程,下面的语句中php-cgi请改成php-fpm
pids=`ps -ef|grep php-cgi|grep -v "grep"|grep -v "$0"| awk '{print $2}'`
if [ "$pids" != "" ];then
for  pid  in   $pids;
do
kill -9 $pid
done

fi

2.增加内存,将PHP_FCGI_MAX_REQUESTS的值设置成跟你内存总存储量相对应的值

3.优化程序,降低处理每次请求占用的内存大小

如果PHP-FPM能够提供配置子进程内存超过指定大小就被kill,那就省事多了

您可能感兴趣的文章:
避免PHP-FPM内存泄漏导致内存耗尽
php写定时器怎么避免内存泄露
定位分析内存泄漏的原因和后果
解决CentOS7中php-fpm进程数过多导致服务器内存资源消耗较大的问题
php-fpm启动参数配置详解
php-fpm 启动参数配置详解
Java内存泄漏原理及如何防止
了解 C 语言中的指针和内存泄漏及如何避免
JQuery1.4+ Ajax IE8 内存泄漏问题
关于IE下图片的预加载过程

[关闭]
~ ~