关于PHP-FPM多过程的模式,想要防止内存泄露成绩很简略,就是要让PHP-CGI正在解决肯定数目过程撤退退却出便可。
不然PHP顺序或第三方模块(如Imagemagick扩大)招致的内存泄露成绩会招致内存耗尽或有余。
php-fpm.conf中有相干设置装备摆设: (保举学习:PHP视频教程)
#请自行按需要设置装备摆设 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/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写按时器怎样防止内存泄漏的具体内容,更多请存眷资源魔其它相干文章!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!