前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR中如何对kernel内核的异常关闭状态做监测?

EasyNVR中如何对kernel内核的异常关闭状态做监测?

作者头像
EasyNVR
发布2021-10-09 16:29:15
6010
发布2021-10-09 16:29:15
举报
文章被收录于专栏:EasyNVREasyNVR

大家知道我们有一套核心的流媒体服务,即EasyDSS_kernel,目前基于EasyDSS-Kernel的多款商业软件(EasyDSS流媒体服务器、EasyNVR智能云终端、EasyGBS国标流媒体服务、EasyNVS视频综合管理平台)已经在旅游业、教育业、物流仓储、平安工地、能源环保、广电行业、工业与物联网、智能农业、视频智能分析等几乎所有的行业都已服务并稳定运营多年。

在部分情况下,用户在使用EasyNVR时,其中的kernel 内核如果异常关闭,则会导致所有EasyNVR视频拉流传输失败,在其他平台软件中也同样存在此问题。因此针对这个问题,我们开发了一套定时任务检测机制,用来判断kernel 内核是否正常运行,本文就介绍一下我们对此功能的实现方式。

定时任务检测实现:

代码语言:javascript
复制
// 定时任务检测kernel服务是否正常运行
s := gocron.NewScheduler(time.Local)
s.Every(5).Seconds().Do(checkMs)
s.StartAsync()

在定时任务中定时检测所有直播接口是否正常响应,如果接口请求失败在根据kernel的进程ID,判断进程是否正常运行,如果进程不存在或者异常则重新启动kernel服务。整个流程代码参考如下:

代码语言:javascript
复制
// 检测接口是否正常
_, err := getAllLives()
if err == nil{
   return true, nil
}
if MsPid == -1{
   return false, fmt.Errorf("服务异常关闭")
}
// 根据kernel进程ID查找进程
process, err := os.FindProcess(MsPid)
if err != nil || process == nil{
   return false, err
}

return true, nil

// 重启流媒体
func RestartMs() {
   go reStartProcess()
   ReStartTime = time.Now()
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档