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加密协议,具有运算速度快,安全性高,资源损耗低的优势,在银行政府等机构广泛使用,高性能,高可用。如果大家对此感兴趣,欢迎联系我们了解咨询。