小编给大家分享一下php写定时器避免内存泄露的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
对于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/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写定时器避免内存泄露的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。