求指点 PHP 内存泄露排查

2024-01-18 10:59:17 +08:00
 well775397252
线上 php-fpm 内存占用越来越高,运行 1 个月都占用 1 个多 G 的内存了,使用的是 php8.1+yii2 框架,看起来应该是有内存泄漏存在,想请教一下这种怎么排查?
2917 次点击
所在节点    PHP
29 条回复
brader
2024-01-18 11:04:24 +08:00
一个月才膨胀到 1G 内存,可以不用理。看下开启一下多少个请求就重启的配置应该就行了
996635
2024-01-18 11:20:27 +08:00
FPM 直接设置 max_requests 低一些, 会自动销毁并新建。
phpfpm
2024-01-18 12:58:45 +08:00
你们一个月不上线?
ZeekChatCom
2024-01-18 13:25:06 +08:00
@phpfpm 上线也不一定要重启啊
well775397252
2024-01-18 13:47:46 +08:00
@996635 感觉没解决根本问题,想排查一下原因
well775397252
2024-01-18 13:48:23 +08:00
@brader 每个 worker 大到 200m ,按道理几十 M 才正常吧
ben1024
2024-01-18 13:55:32 +08:00
. 排查:
如果知道是哪个业务线, 就用 Xdebug 逐步看执行内存情况, 主要在于静态或内存变量相互依赖
如果不知道用 Tideways 试试
. 直接点 max_requests 设置小一些, 精神压力小很多
markgor
2024-01-18 14:01:55 +08:00
如果没使用到 fastcgi_finish_request 理论上不会有代码级别的内存泄漏问题。
至于 php-fpm ,我记得申请后的内存就算使用完,也不会放出给系统,避免下次使用重新申请,
另外还有第三方扩展等的原因
brader
2024-01-18 14:17:43 +08:00
@well775397252 这个不一定,看业务的,二三十 M 比较常见,几百 M 可能是有些接口有大数组,或者像 excel 导入导出之类的业务
ucando
2024-01-18 14:29:40 +08:00
其实我更想知道要怎么操作才会内存泄漏?
well775397252
2024-01-18 14:37:01 +08:00
@ucando
@phpfpm 对啊,几个月才更新一次
well775397252
2024-01-18 14:41:35 +08:00
@ben1024 哎,都试试吧,先压测一下瞧瞧
QlanQ
2024-01-18 15:11:17 +08:00
不认为你这存在内存泄露,如果是有问题,1 个月才到 1G ?流量多一点,分分钟都能爆了吧
Logtous
2024-01-18 16:52:39 +08:00
xhprof 分析看看
woshicixide
2024-01-18 16:55:29 +08:00
你这问题有点问的有点不清不楚,这 1 个多 G 是单个 worker 还是全部加起来,另外 fpm 大概率不会有这种问题,可以看看你装的扩展有没有可能
encro
2024-01-18 16:58:59 +08:00
yii2 的 10 年老用户了。。。

修改 fpm 配置,跑完 1000 个请求就销毁,永远不会有问题的。。。

你首先得找到是那个进程的问题。内存持续增加,那么是命令行程序?
encro
2024-01-18 17:00:38 +08:00
@well775397252
每个 work200m ,可能是因为你 php 装了一些没用的扩展。开启了没必要的缓存。
encro
2024-01-18 17:01:11 +08:00
很可能是你开启了 xdebug
well775397252
2024-01-18 17:12:16 +08:00
@encro #16 php-fpm,现在没开启自动重启进程那个配置
well775397252
2024-01-18 17:13:05 +08:00
@woshicixide 全部加起来,平均每个进程 200 多 M

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

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

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

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

© 2021 V2EX