浏览器flv.js实时播放rtsp转码视频,浏览器内存泄露问题排查并解决

ops/2024/9/24 7:25:17/

背景:

由于浏览器无法直接播放rtsp协议,需要通过转码服务进行推送给前端,技术采用的转码服务+websocket+flv进行浏览器播放,有很多现场都没有出现浏览器崩溃的情况,最近遇到一个现场反馈说系统经常崩溃,无法打开,最后排查的原因是客户的浏览器直接崩溃了,经过和客户沟通复现这一过程,反向客户有个使用习惯,打开实时视频不会关闭,也不会刷新,就一直播放;这时就针对这个视频播放模块排查,发现浏览器内存持续增加,不会主动释放,页面刷新后,浏览器内存就下来了,这时怀疑内存泄露了,至于其他现场没问题,应该是打开一会就主动关闭了,所以间接没出现这个问题,既然问题出现了,就行优化:

           在我的理解,由于websocket一直在推送视频流,说明播放器绝对有个缓存数据用来缓冲视频流数据,应该是这块数据缓冲区没有来的及进行释放,然后问题反馈到前端负责人,最后排查确实是这个原因,由于flvjs用的是bilibili的 flvjs,查看了相关文档确实有这块的设置,我把部分设置拿出来:

 flvOptionalConfig: {enableWorker: true,enableStashBuffer: true, //启用缓存stashInitialSize: 4096, //缓存大小4mlazyLoad: false,lazyLoadMaxDuration: 40 * 60,autoCleanupSourceBuffer: true,autoCleanupMaxBackwardDuration: 3 * 60,autoCleanupMinBackwardDuration: 1 * 60,}

这里配置有三个比较重要的:

         autoCleanupSourceBuffer: true,

         是否开启自动处理


          autoCleanupMaxBackwardDuration: 3 * 60, 

          当向后缓冲区持续时间超过此值(以秒为单位)时,对SourceBuffer执行自动清理


          autoCleanupMinBackwardDuration: 1 * 60,

        指示在执行自动清理时为向后缓冲区保留的持续时间(以秒为单位)。

如果采用其他的组件,原理应该都差不过,自行阅读文档或者源码进行设置


http://www.ppmy.cn/ops/54900.html

相关文章

java反射和注解

反射 获取class对象的三种方法 ①:Class.forName("全类名"); ②:类名.class ③:对象.getclass(); 代码样例 package com.ithema;public class Main {public static void main(String[] args) throws ClassNotFoundException {//第…

Spring Boot创建定时任务

在项目开发中,可能会需要定期执行任务,比如发送消息通知,清理无用文件等,这时可以使用Spring Boot的定时任务功能。 安装依赖 定时任务功能包含在Spring Boot中,因此引入Spring Boot Starter Web即可安装相关依赖。 …

享元模式

享元模式 享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享尽可能多的相似对象来最小化内存使用,从而提高系统的性能。这种模式通常用于处理大量细粒度对象的情况,例如在文本编辑器、图形编辑器和游戏开发中。 享元模式的原理 享元模式的核心思想是区分内部…

vue 中使用element-ui实现锚点定位表单

效果图&#xff1a; 代码&#xff1a; html代码&#xff1a; <div class"content-left"><el-tabs :tab-position"left" tab-click"goAnchor"><el-tab-pane v-for"(item,index) in anchorNameList"v-anchor-scroll:ke…

Symfony国际化与本地化:打造多语言应用的秘诀

标题&#xff1a;Symfony国际化与本地化&#xff1a;打造多语言应用的秘诀 摘要 Symfony是一个高度灵活的PHP框架&#xff0c;用于创建Web应用程序。它提供了强大的国际化&#xff08;i18n&#xff09;和本地化&#xff08;l10n&#xff09;功能&#xff0c;允许开发者轻松创…

编译原理2

推导和短语 推导 推导过程中&#xff0c;每一步推导都是对句型的 最右非终结符 进行替换&#xff0c;最右推导(规范推导)&#xff1b; 短语 用 β 替换 A&#xff0c;则 β 就是 关于A 的一个短语&#xff1b; 直接短语是短语范围内的一步推导&#xff1b; 直接短语可能不…

snowflake 不再是个数据仓库公司了

标题先上结论&#xff0c;为啥这么认为&#xff0c;且听接下来道来。 snowflake 非常成功&#xff0c;开创了云数仓先河&#xff0c;至今在数仓架构上也是相对比较先进的&#xff0c;国内一堆模仿的公司&#xff0c;传统上我们会认为 snowflake 肯定是一家数据仓库公司。不过最…

中英双语介绍美国的州:印第安纳州(Indiana)

中文版 印第安纳州简介 印第安纳州位于美国中西部地区&#xff0c;是一个以其农业、制造业和体育文化而著称的州。以下是对印第安纳州的详细介绍&#xff0c;包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 印第安纳州东临俄亥俄州&#xff0c;北接密歇根州…