EasyGBS程序停止时内核未能关闭,应该如何优化?【附代码】

为解决EasyGBS在Linux环境下关闭时内核未正常关闭的问题,TSINGSEE青犀视频对其进行了代码优化。通过调整关闭顺序,确保先关闭redis和打洞服务,再关闭核心的mediaserver组件,最后关闭其他模块,有效避免了内核残留的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去年TSINGSEE青犀视频对旗下的EasyDSS、EasyGBS等视频平台陆续更换了新内核版本。新内核版本性能更加稳定,感兴趣的用户可以前往官网进行使用体验。

EasyGBS架构.jpg

近期我们接到用户的反馈,在测试EasyGBS的过程中,有时在Linux系统下,EasyGBS虽然关闭,但是内核却没有关闭。针对这种情况,我们对代码进行了优化处理。

因为EasyGBS程序是以服务方式运行,在Linux系统下以systemd的方式守护进程来实现服务。出现上述情况,我们猜测是由于上层关闭比较慢,时间过于长久导致没有去关闭底层启动的内核程序。因此需要我们优化代码,在EasyGBS程序关闭时,立即停止内核程序,来保证程序的正常退出。

代码如下:

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.png

EasyGBS截图.png

EasyGBS国标视频云服务平台在去年研发了不少的功能,比如告警功能、语音对讲功能等。今年也将持续对这些功能进行各项适配性的测试,目前我们也在开发一些智能分析相关的服务,如果大家有兴趣可以关注我们的博客,我们将不定期在博客内分享我们的开发经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值