随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

EasyGBS程序启动过多GO协程未关闭导致内存占用问题的解决

国标平台EasyGBS支持用户根据自己的需求自由进行二次开发,即便是试用版本也支持调用二次开发接口,接口丰富全面,可以满足大多数用户的需求。在日常EasyGBS服务运行测试过程中,我们发现程序会启动很多go协程没有关闭,导致服务器内存过高的问题。

通过排查代码发现,是在设备播放来流数据的时候程序初始化启动了过多的级联转发程序。所以添加如下代码,只在程序初始化时创建级联初始化,而不是每次来了流数据之后都初始化:

if server.Cascade != "" {

server.NewCCTCPServer()

sms_log.Log.Printf("级联 rtp [%s] conn set: %s", server.CCTransport, server.Cascade)

if server.CCTransport == "TCP" {

log.Printf("cascadeMode %s", cascadeMode)

if cascadeMode == "active" {

//server.NewCCTCPServer()

} else {

在此查看程序协程数恢复正常。

EasyGBS有多种授权方式,也支持用户根据自己的需求自由进行二次开发,是一款开放性较强的视频综合管理流媒体平台,此外,EasyGBS还能够对接公安网、校园网的国标协议视频流媒体服务,对于很多项目来说,国标协议的级联功能是一个非常实用的功能,将上下级平台连接起来并实现统一管理是很多项目的需求。因此如果大家有需要,可以关注我们或者直接下载测试。

 

posted on   EasyGBS  阅读(97)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
历史上的今天:
2020-08-20 国标协议GB28181流媒体服务视频云服务EasyGBS平台如何开启“演示”模式?
2020-08-20 国标协议GB28181视频平台EasyGBS云端录像与按需直播是否可以同时开启?
2020-08-20 海康网络摄像机通过GB28181注册到EasyGBS后,如何在摄像机中关闭声音?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示