内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
memory leak会最终会导致out of memory!
内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。
1.泄漏原因:
一.没有及时释放大变量
二.php-fpm造成的内存泄漏。
三.就是第三方扩展本身实现存在问题
解决办法:
临时办法:查看php-fpm内存占用情况 # ps -ylC php-fpm –sort:rss //按rss排序 直接kill -9 pid号(或cron定时脚本清理)
针对原因一:用完及时销毁变量
针对原因二:配置优化
1.php-fpm.conf中有个参数pm.max_requests,等同于PHP_FCGI_MAX_REQUESTS。意思是一个fpm进程处理多少个请求后自动杀掉另起新进程(默认关闭,开启,适当降低该值)。