前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR长期运行播放ws-flv导致线程大量占用且内存增加处理方法

EasyNVR长期运行播放ws-flv导致线程大量占用且内存增加处理方法

作者头像
EasyNVR
发布2021-07-19 16:00:53
5350
发布2021-07-19 16:00:53
举报
文章被收录于专栏:EasyNVREasyNVR

近期我们更新了最新的EasyNVR测试版本,有不少用户已经在用最新版本进行项目上的测试,同时我们也接到一些反馈称该版本EasyNVR在使用过程中如果转码的话,会导致内存一直增长且难以下降,也就是我们常说的内存泄露。

在解决转码模块malloc内存没有free导致内存泄漏的问题后,我们发现官网EasyNVR演示平台依然存在长期运行后内存一直增长的问题。

除了转码模块,仍然存在其他线程存在占用内存问题,导致NVR长期运行内存增长。查看EasyNVR的pprof分析,发现在ws-flv的数据发送线程有大量的内存占用情况。

查看这部分代码后发现,后端对ws-flv发送后的出错信息没有做任何处理。从而导致后台在前端断开web socket连接后仍然没有退出线程,数据无法发送全部缓存在待发送的readbytes缓存中。

解决该问题需要对web socket发送返回错误码进行判断,在确保在前端推出websoket连接后,后端能够正确的结束发送线程。参考代码如下:

关于内存占用,我们之前也解决过EasyGBS内的相关问题:EasyGBS快照拉流频繁占带宽及内存怎么解决。大家有兴趣可以了解一下。更多视频相关解决方案,欢迎联系我们了解。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档