网络穿透/云端组网/视频RTMP推流服务平台EasyNTS上云网关经常掉线重连如何解决?

TSINGSEE青犀视频研发团队前段时间将RTMP推流功能集成到了EasyNTS上云网关内,EasyNTS不仅可以支持网络穿透、云端组网,现在也能够作为视频推流辅助设备,将RTSP、RTMP、HTTP、HLS拉取到本地并推到RTMP流媒体服务器上。

近期TSINGSEE青犀视频研发团队在配置EasyNTS上云网关的硬件时,发现设备在上线到EasyNTS管理平台后,运行无规则的时间内会出现短时间的下限,随后上线。在使用上,这种情况会造成配置的不便。

我们排查到推流服务运行,才发现在推流的时候统计流量的时候,因为读锁和写锁出现冲突,造成死锁,导致系统卡死,然后重启。

因此解决方法就是,在遍历map集合的操作,变成读取数据库的操作这样可以避免在遍历map集合时候读取和写入操作出现冲突。参考代码如下:

func Sate() {
   var channels []*do.TChannelInfo
   dao.DB().Find(&channels)
   for _, v := range channels {
      if v.IsEnable == 1 {
         stream.SetClientRateSin(fmt.Sprintf("%s - 拉流", v.Name), stream.GetClientRate(fmt.Sprintf("%s - 拉流", v.Name))/5)
         stream.DelClientRate(fmt.Sprintf("%s - 拉流", v.Name))
      }
   }
}

修改后再次运行EasyNTS上云网关,设备保持正常在线。

EasyNTS视频上云网关平台采用MQTT加密协议,具有运算速度快,安全性高,资源损耗低的优势,在银行政府等机构广泛使用,高性能,高可用。如果大家对此感兴趣,欢迎联系我们了解咨询。

原文地址:https://www.cnblogs.com/TSINGSEE/p/14062313.html