zoukankan      html  css  js  c++  java
  • EasyNVR中如何对kernel内核的异常关闭状态做监测?

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

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

    定时任务检测实现:

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

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

    // 检测接口是否正常
    _, 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()
    }
  • 相关阅读:
    .net core 2.x默认不支持gb2312
    获取枚举描述
    C#中DateTime.Ticks
    验证组件FluentValidation的使用示例
    python计算出现错误
    EF的导航属性
    webpack不打包指定的js文件
    递归树处理,配合vue的vueTreeselect组件使用
    elementUI 日期时间选择器el-date-picker开始时间与结束时间约束
    Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/15348578.html
Copyright © 2011-2022 走看看