bilibili / flv.js

HTML5 FLV Player
Apache License 2.0
22.91k stars 3.39k forks source link

多路播放内存溢出排查请教 #770

Open SteveWooo opened 1 year ago

SteveWooo commented 1 year ago

版本:v1.6.2 CDN 浏览器:chrome 108、107,max-old-space-size=4096 问题描述:16路ws-flv流播放24小时直播流、28路ws-flv流播放12小时直播流(1080P 25fps 6M码率),然后触发其中一个video标签全屏,或者关闭其他浏览器tab页面等耗内存操作,稳定发生浏览器卡顿,内存飙升,然后OOM(有一次不OOM,内存飙到3G多后,恢复正常水平)。不触发全屏或创建销毁tab操作的话,暂时没发生过这个问题,同一个前端应用曾连续播放一个月。刚开始播放12小时内不会触发这个OOM问题,视频流量较小时(720p 16fps)暂无触发这个问题。

flvjs配置:(enable worker = true) image

同时想请教一下,播放过程中flvjs解码的进程和浏览器MSE模块使用的进程,是同一个吗?下图红框就是点全屏后内存飙升的进程,因为了解到MSE有150M/流的限制,且看到chromium bugs里面有人说到appendBuffer存在一些问题,在109才修复,所以想看看是不是这个原因。 image 外部程序对这条进程的内存记录(1秒间隔): image

SteveWooo commented 1 year ago

另外,这边设置每20分钟就摧毁重载一次整个flvjsplayer实例。

image

每10秒检查修复一次延迟

image

SteveWooo commented 1 year ago

🙇🙇‍🙇🙇‍

XiaotaoTTTtian commented 1 year ago

我也遇到这个问题,请问你解决了吗

SteveWooo commented 1 year ago

我也遇到这个问题,请问你解决了吗

无解,刷新页面都清不走泄漏的内存,只能想办法杀PID,然后静音视频自动播放。 chrome109加了些缓冲区舒缓了一下(https://chromium-review.googlesource.com/c/chromium/src/+/3362558 ) 但问题没根治,泄漏到一定程度后稍微做点大内存的操作都很容易OOM