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

国标平台EasyGBS支持用户根据自己的需求自由进行二次开发,即便是试用版本也支持调用二次开发接口,接口丰富全面,可以满足大多数用户的需求(www.wankui.net)。在日常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还能够对接公安网、校园网的国标协议视频流媒体服务,对于很多项目来说,国标协议的级联功能是一个非常实用的功能,将上下级平台连接起来并实现统一管理是很多项目的需求。因此如果大家有需要,可以关注我们或者直接下载测试。

公司名称:安徽滨特尔水处理科技有限公司