PHP-FPM 请求结束后,不会回收全部内存。

1. 运行环境#

Docker + Centos7 + Nginx + php7.4

1). 当前使用的 Laravel 版本?#

8.0 (其实与 laravel 无关)

2). 当前使用的 php/php-fpm 版本?#

PHP 版本:

7.4.27

php-fpm 版本:

没找到 php7

3). 当前系统#

Centos7

4). 业务环境#

开发环境

5). 相关软件版本#

nginx version: nginx/1.21.4

2. 问题描述?#

Laravel

Laravel

每次运行完一个请求,fpm 进程并不会回收内存。导致一直占用内存。

PHP-FPM 请求结束后,不会回收全部内存。
机器只有不到 1G 的内存可以使用,不自动释放的话。3,4 个请求之后,内存就满了

3. 您期望得到的结果?#

自动释放内存

4. 您实际得到的结果?#

请求结束后,回收脚本使用的全部内存

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9
╰ゝSakura

php-fpm 是常驻进程,占用内存是正常的。 至于回收脚本使用的内存,是指你的 php 程序执行中声明的变量,分配的内存会在请求结束后回收。 如果你要测试验证,你就写个 php 脚本,file_get_contents 读取个几百 M 的文件,请求这个脚本,php-fpm 占用内存不会随着你这个脚本读取的几百 M 文件上升的。

2年前 评论
pleaseyang (楼主) 2年前
╰ゝSakura (作者) 2年前

发表下个人愚见,很多程序在 linux 运行都会持续占用内存,但这并非真正的占用,在其他应用真正需要内存时,系统会回收掉这部分内存

2年前 评论
pleaseyang (楼主) 2年前
荒街! (作者) 2年前
巴啦啦

想问一下你是通过什么方式读取的一个大文件?

2年前 评论
巴啦啦 (作者) 2年前
pleaseyang (楼主) 2年前