EasyGBS平台出现CPU过高的现象是什么原因?如何解决?
EasyGBS是基于国标GB28181协议的视频平台,可支持视频直播、录像、云存储、检索与回放、云台控制、告警上报、语音对讲等功能。EasyGBS平台功能全面、综合性强、视频能力灵活,能够涵盖所有监控领域的需求,已经在大量的项目中落地应用,如明厨亮灶、平安乡村、雪亮工程等。
有用户反馈,在使用EasyGBS时,出现了CPU过高的情况,请求我们协助排查。今天来和大家分享一下排查及解决办法。
通过pprof工具分析发现,是下级信令异常,频繁发送给上级导致CPU过高。
添加如下代码,将下级的sip消息解析过后,设置对应的频率处理,如果是不重要的消息则直接忽略;如果是需要处理的消息,按照一定的间隔时间来处理,如此可以保证程序的稳定运行。
// Init the output area
out.UriType = ""
out.Method = nil
out.StatusCode = nil
out.User = nil
out.Host = nil
out.Port = nil
out.UserType = nil
out.Src = nil
// Keep the source line if needed
if keep_src {
out.Src = v
}
// Loop through the bytes making up the line
for pos < len(v) {
// FSM
switch state {
case FIELD_NULL:
if v[pos] >= 'A' && v[pos] <= 'S' && pos == 0 {
state = FIELD_METHOD
continue
}
再次运行一段时间后查看EasyGBS页面的数据,此时CPU数据已经显示正常了。
EasyGBS强大的视频能力既可以作为业务平台,也能作为视频能力平台进行调用,此外平台级联功能可以实现平台与平台之间的数据互联互通、资源共享,在应用场景中达到视频资源汇聚、协同监督、平台联动等目的。感兴趣的用户可以前去演示平台进行体验,或者下载进行部署测试,欢迎大家的关注。