EasyGBS程序停止时内核未能关闭,应该如何优化?【附代码】
去年TSINGSEE青犀视频对旗下的EasyDSS、EasyGBS等视频平台陆续更换了新内核版本。新内核版本性能更加稳定,感兴趣的用户可以前往官网进行使用体验。
近期我们接到用户的反馈,在测试EasyGBS的过程中,有时在Linux系统下,EasyGBS虽然关闭,但是内核却没有关闭。针对这种情况,我们对代码进行了优化处理。
因为EasyGBS程序是以服务方式运行,在Linux系统下以systemd的方式守护进程来实现服务。出现上述情况,我们猜测是由于上层关闭比较慢,时间过于长久导致没有去关闭底层启动的内核程序。因此需要我们优化代码,在EasyGBS程序关闭时,立即停止内核程序,来保证程序的正常退出。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | func (p *program) Stop(s service.Service) (err error) { defer log.Println( "********** STOP **********" ) defer utils.CloseLogWriter() redis2.Close() stund.Close() mediaserver2.UnInit() p.StopHTTP() sms.UnInit() uas.Stop() stream.CloseClient() gbsdao.Close() //关闭数据库链接 nvs.Stop() return } |
以上程序的作用是,EasyGBS收到停止命令后,首先关闭redis,再关闭打洞服务stund,然后关闭内核mediaserver,最后再关闭上层的其他模块,这样即可保证了程序正常关闭。
优化后交给用户测试,没有出现上述内核未关闭的情况了。
EasyGBS国标视频云服务平台在去年研发了不少的功能,比如告警功能、语音对讲功能等。今年也将持续对这些功能进行各项适配性的测试,目前我们也在开发一些智能分析相关的服务,如果大家有兴趣可以关注我们的博客,我们将不定期在博客内分享我们的开发经验。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
2021-01-14 国标GB28181协议视频智能监控平台EasyGBS级联到上级的设备无法回看设备录像是什么原因?
2021-01-14 国标GB28181协议视频监控平台EasyGBS编译ARM版播放视频时nginx占用内存下降困难问题优化
2021-01-14 【解决方案】如何通过国标GB28281协议视频平台EasyGBS搭建一套停车场统一管理监控系统?
2021-01-14 国标GB28181协议视频网页无插件直播平台EasyGBS级联过程中针对卡顿如何优化?