php内存泄露,系统缓存消耗?

来源:互联网 发布:时尚好听的网络歌曲 编辑:程序博客网 时间:2024/05/29 14:11

前言:持续我一贯的标题党作风,说说例子解决方案,没有深入探讨。

 

情景:线上图片服务压缩的图片品质(100),缩略图品质(100)占用了很多空间,导致后来又55个文件了(占用空间160G)才发现这个问题。现在需要解决的是把这部分压缩个低品质的缩略图节省空间(当然在这个硬盘白菜价的时代搞这样的问题没这个必要,我这里讨论的不是节省空间是想找出内存消耗问题)。我用php脚本重新生成缩略图的时候,通过top发现内存消耗一直增加导致后来脚本报错内存不够了,到底谁动了我的内存?

 

处理代码版本一(php):

 

Php代码  收藏代码
  1. set_time_limit(0);  
  2.   
  3. function thumbnailimage($img,$width,$height,$savefile){  
  4.     $new_img = imagecreatetruecolor ( $width$height );  
  5.     imagedestroy($new_img);  
  6. }  
  7. //$list:是那个55万的文件名  
  8. foreache($list as $v) {  
  9.     $img = imagecreatefromjpeg($v);  
  10.     thumbnailimage($img,480,300,$savepath);  
  11.     imagedestroy($img);  
  12. }  
 

 

这个脚本处理了5千多个的时候,由于内存不够用挂了,然后我改了php.ini里面的memory_limit改成了5G,但是随着脚本的执行,内存也会被消耗殆尽。

于是我就以为是php的内存泄露了,然后就想用其他方案解决,在老王的技术手册里面看到GraphicsMagick这个工具,然后写了个脚本去处理,结果发现top看到的内存消耗还是一直增加,然后经人提示这个应该是系统操作文件(写文件)文件被缓存了消耗了内存,

调整bash脚本,处理一张图片后手动释放一下内存(sync && echo 3 > /proc/sys/vm/drop_caches),然后top看到的内存消耗就正常了。

由于这个bash脚本处理的速度还不如php的gd库处理,然后就换成php处理。

验证php脚本内存消耗的原因:

处理代码版本二(php):

 

Php代码  收藏代码
  1. set_time_limit(0);  
  2.   
  3. function thumbnailimage($img,$width,$height,$savefile){  
  4. $new_img = imagecreatetruecolor ( $width$height );  
  5. ...  
  6. imagedestroy($new_img);  
  7. }  
  8. //$list:是那个55万的文件名  
  9. foreache($list as $v) {  
  10.     $memory1=memory_get_usage();  
  11.     file_put_contents('memory','memory1:'.$memory1."\n",FILE_APPEND);  
  12.       
  13.     $img = imagecreatefromjpeg($v);  
  14.     thumbnailimage($img,480,300,$savepath);  
  15.     imagedestroy($img);  
  16.       
  17.     $memory1=memory_get_usage();  
  18.     file_put_contents('memory','memory1:'.$memory1."\n",FILE_APPEND);  
  19.       
  20.     system('sync && echo 3 > /proc/sys/vm/drop_caches');  
  21. }  
 

通这个版本处理内存消耗就正常了,当然php进程也要消耗内存,php.ini的memory_limit稍微改大一下。

从这里看来消耗内存的是系统操作文件消耗的,不是php,由于我的无知一开始错怪了PHP。

 

结尾:这个例子只是简单的描述我找到内存消耗的原因。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 头发里长脓包怎么办 工作总是做不好怎么办 能力差的人该怎么办 洗衣机里有味道怎么办 洗衣机里面有味道怎么办 洗衣机内有味道怎么办 洗衣机总有味道怎么办 上体育课脚扭伤怎么办 教学实践评价表怎么办 初中孩子成绩下降怎么办 给孩子开家长会怎么办 读初三很难受怎么办 初三了英语很差怎么办 数学考30分怎么办 小学生阅读理解能力差怎么办 小学一年级数学差怎么办 小学一年级数学很差怎么办 初中生脸上长斑怎么办 初中生脸上长痘怎么办 初中成绩不好高中怎么办 农村老人去城里怎么办 留守儿童想妈妈怎么办 教师档案丢失了怎么办 转正定级表丢失怎么办 娃娃写作业慢怎么办 写作业眼睛疼怎么办 发生火灾怎么办大班教案 大班健康发生火灾怎么办 学生上课不提问怎么办 入户通知单丢了怎么办 打架后还来找事该怎么办 着火了怎么办教案视频 电脑一小半黑屏怎么办 绝地求生闪退怎么办 win7没浏览器了怎么办 浏览器被删除了怎么办 把快捷方式删了怎么办 ie文件找不到了怎么办 ie文件不存在了怎么办 大学素质分不够怎么办 素拓学分不够怎么办