TSINGSEE青犀视频经过几年的发展,积累了不少项目客户。一个月前,有个老客户旧版本的EasyNVR升级至新版本,升级后使用过程中会不时出现CPU占用过高的现象。
经过研发在本地测试,并没有出现CPU过高,但在客户现场测试,发现程序启动之后一直上涨,几十秒钟CPU就占用过高。对于CPU占用的问题,部分情况可能是因为该系统在运行的时候没有采用按需播放的方式,导致服务器负荷量过大,也有可能是服务器拉取一些无效的视频流,运行占用了CPU。
不管是何种原因,大概率都是EasyNVR拉流的问题。我们排查了以上两种可能,最后发现是EasyNVR拉流时没有做好兼容,导致CPU升高。
超时有问题进入死循环:
超时没问题退出:
此处需要抓包判断,通过抓包后,可以看到ffplay播放客户流地址无返回,向RTSP地址发消息也无返回。
同负责拉流库的研发人员沟通后,我们从拉流库获解决了获取不到流数据的分辨率问题,然后将编译好的libEasyStreamClient.dll这个名称的文件更新后并给客户替换,随后重新启动系统,问题得以解决。