求指点 PHP 内存泄露排查

339 天前
 well775397252
线上 php-fpm 内存占用越来越高,运行 1 个月都占用 1 个多 G 的内存了,使用的是 php8.1+yii2 框架,看起来应该是有内存泄漏存在,想请教一下这种怎么排查?
2825 次点击
所在节点    PHP
29 条回复
encro
339 天前
php 开启了 xdebug ,结巴词库,ip 地址库之类,为了提高性能,有些程序会将字典之类的加载的内存,很正常。
zhangqilin
339 天前
内存满了不一定不会回收,你放到一台内存小点的机器上或者 pod 上,
比如 1 个月 1g ,你放到 500m 的上,然后压测看会不会 OOM
说不定内存占用过多了就会回收了
coderzhangsan
339 天前
@well775397252 #20 平均每个进程 200 多 M ,fpm 配置里 pm.max_requests 设置的多少,如果设置的比较大,那有可能会增长到这个两级,把这个值适当降低就可以了;正常来讲 fpm 进程很难会内存溢出,除非一些占用内存的比较大的场景才会,例如大数据的导入和导出,又或者开启了 debug 等扩展,静态内存占用较大。
hahamy
339 天前
每个 fpm 进程 200 多兆,200 多兆看的是哪个值? top 命令的内存有几个指标
Rorysky
339 天前
不是什么关键业务就定时重启,有时间关注现实生活
NjcyNzMzNDQ3
338 天前
xhprof +1 , 这个工具用堆栈排查每个方法占用内存大小、耗时、cpu 用量,我之前有 curl_util 忘记 close 就用的他
yc8332
338 天前
要看你怎么重启 fpm 的,一直开着的话,如果你的请求中有需要大内存的,很正常。
lairdnote
338 天前
xhprof. 或者跟踪进程 xstrace
alex8
338 天前
Php 被发明时就有内存泄漏,7 以后已经好很多了。需要 max request 参数定期杀进程,不然多大的内存都能慢慢吃完

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1009607

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX