• EasyDSS录像回看封面快照过多导致CPU占用高优化方案


    EasyDSS是TSINGSEE青犀视频云边端架构中支持RTMP协议前端设备的视频直播点播平台,除了网页直播和点播外,也支持视频录像,录像一般根据录像计划设定即可。

    EasyDSS 录像回看页面中,会实时生成所有录像的封面快照,该功能在录像非常多的情况下,会生成大量的快照,导致服务器cpu达到 100%,最终系统后台崩溃,无法运行。

    因此我们需要对该代码进行优化调整,以前的代码逻辑是接收前端请求,则进行截图操作,这样后台会开启 n 个截图进程,导致 cpu 飙高,因此优化在队列中进行切图操作。

    首先在初始化快照模块的时候,创建一个 gSnapChan 通道,当通道中有新的切图信息后,则进行切图操作。参考代码如下:

    // 初始化快照切换模块
    func InitSnap() {
       tool.Go(func() {
          for snapMsg := range gSnapChan {
             SnapTs(snapMsg)
             time.Sleep(1 * time.Second)
          }
       })
    
       tool.Go(TimerSnap)
    }

    添加到队列中的代码如下:

    // 添加到 snap 队列中
    func AddSnap(msg *SnapMsg) {
       tool.Go(func() {
          if msg != nil {
             gSnapChan <- msg
          }
       })
    }

    以上代码以前并未添加 time.Sleep(1 * time.Second),实际使用过程中发现,仍然会导致 cpu 突然飙高。在大量数据运行的时候,确实出现飙高的操作,因此添加适当的沉睡时间,解决突然飙高一段时间的问题。

    EasyDSS视频直播/点播服务平台诞生至今,我们做了不少版本的功能更新和升级,除EasyDSS外,TSINGSEE青犀视频全线产品均有演示平台供参考,用户可以进入演示平台阅览界面,也有测试版本供大家下载测试,若大家有兴趣可以联系我们进行测试。

  • 相关阅读:
    洛谷——P2018 消息传递
    洛谷——P2827 蚯蚓
    洛谷——P1120 小木棍 [数据加强版]
    洛谷——P1168 中位数
    洛谷——P1850 换教室
    Kali-linux使用Metasploit基础
    Kali-linux使用Metasploitable操作系统
    Kali-linux使用OpenVAS
    Kali-linux使用Nessus
    Kali-linux绘制网络结构图
  • 原文地址:https://www.cnblogs.com/easydss/p/15353892.html
Copyright © 2020-2023  润新知