Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >EasyGBS程序停止时内核未能关闭,应该如何优化?【附代码】

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

原创
作者头像
TSINGSEE青犀视频
发布于 2022-01-12 09:38:04
发布于 2022-01-12 09:38:04
56100
代码可运行
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频
运行总次数:0
代码可运行

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

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

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

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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国标视频云服务平台在去年研发了不少的功能,比如告警功能、语音对讲功能等。今年也将持续对这些功能进行各项适配性的测试,目前我们也在开发一些智能分析相关的服务,如果大家有兴趣可以关注我们的博客,我们将不定期在博客内分享我们的开发经验。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EasyGBS新内核版本摄像头流量统计为零的优化方案
EasyGBS的部分项目现场是具有摄像头直播流量统计功能的,在某项目中,我们发现EasyGBS通道直播正常的情况下;所有摄像头的直播流量上下行均为零后发现公网也存在此问题。
TSINGSEE青犀视频
2021/09/10
2370
如何优雅的关闭Go Channel【译】
不要在消费端关闭channel,不要在有多个并行的生产者时对channel执行关闭操作。
老钱
2018/08/15
1.5K0
爬虫工具_应用程序market
1. 真正派发任务的是 consumer 这个coroutine,所以也在内部做了并发控制.
全栈程序员站长
2022/11/18
5180
RTSP协议视频结构化智能分析平台EasyNVR开启录像无法做停止操作原因分析
视频结构化给现在飞速发展的视频监控体系整理带来了有价值的变化,视频数据更加容易筛选,作为视频结构化智能分析平台,EasyNVR具备稳定易用、低延迟等特点,为安防视频监控可视化的基础视频能力。EasyNVR平台具备直播、录像、视频分发等功能,但是近期测试中EasyNVR开启录像后无法停止录像了,强制停止(./stop ctrl + c)也无效。
EasyNVR
2021/04/12
3300
RTSP协议视频结构化智能分析平台EasyNVR开启录像无法做停止操作原因分析
视频结构化给现在飞速发展的视频监控体系整理带来了有价值的变化,视频数据更加容易筛选,作为视频结构化智能分析平台,EasyNVR具备稳定易用、低延迟等特点,为安防视频监控可视化的基础视频能力。EasyNVR平台具备直播、录像、视频分发等功能,但是近期测试中EasyNVR开启录像后无法停止录像了,强制停止(./stop ctrl + c)也无效。
TSINGSEE青犀视频
2021/04/08
4340
EasyGBS以服务的方式启动但其中的easydss流媒体仍以进程启动的优化
TSINGSEE青犀视频开发的视频流媒体平台其中都将easydss流媒体作为其支撑运行的根本服务系统,因此有使用EasyGBS或者EasyNVR的用户在启动平台的时候,会看到easydss流媒体的启动。
TSINGSEE青犀视频
2021/08/31
2540
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
  前段时间在对接第三方接口的时候发生了一个非常奇葩的问题,就是使用 .NET Framework 4.6 HttpWebRequest进行网络请求的相关问题。背景,关于调用第三方的接口都是使用使用自己封装的一个HttpWebRequestHepler帮助类,在本地开发时调用第三方接口都是正常的。然而当我部署到运维给我一个服务器(阿里云服务器)时刚开始提示是请求被中止: 未能创建 SSL/TLS 安全通道,之后经过一番修改以后就是提示基础连接已经关闭: 发送时发生错误。之后尝试了各种方法,还是没有办法解决基础连接已经关闭: 发送时发生错误这个问题。最后真的是无能为力,光这个问题找了一下午的解决方案,最后换到了我自己的阿里云服务器是可以正常调通第三方接口的。然后让运维看了下服务器结果是这个服务器都没有开通外网,所以导致了这个问题的出现。下面记录下问题排除的过程,希望能够帮助到遇到这种坑的小伙伴。
追逐时光者
2021/04/20
9.3K0
.NET HttpWebRequest(请求被中止: 未能创建 SSL/TLS 安全通道)和(基础连接已经关闭: 发送时发生错误)问题查找解决
EasyGBS添加新内核后云端录像无法下载问题优化
云端录像是我们前几年开发的功能,在EasyGBS、EasyCVR中均有运用。在多数项目中,云端录像的可控性、回溯性都给管理者提供了很大的便捷性。云端录像的接口需要被调用后才能使用,同时也支持修改云端录像的存储位置。
TSINGSEE青犀视频
2021/07/30
5590
go安装服务
golang 安装程序为服务 package main import ( "context" "fmt" "io" "log" "net/http" "os" "path/filepath" "github.com/gin-gonic/gin" "github.com/kardianos/service" ) type Services struct { Log service.Logger Srv *http.S
码缘
2022/10/05
4300
Go: 如何写出内存泄露的程序
不管使用什么语言,内存泄露是经常遇到的一类问题,然而使用Go语言编写内存泄露的代码却不容易,本文将列举几个可能出现内存泄露的场景,从反例中学习如何避免内存泄露。
萝卜要努力
2025/03/07
550
Go: 如何写出内存泄露的程序
好技能 | 如何用Go开发eBPF程序
今日推荐 《ArkTS语言特性与优势解析》ArkTS是华为为鸿蒙系统开发设计的一种编程语言,这篇文章讲解了ArkTS的核心特性,及与其他语言的对比,对想要了解鸿蒙开发的可以做指导。
穿过生命散发芬芳
2024/12/02
1240
OpenHarmony 内核源码分析(远程登录篇) | 内核如何接待远方的客人
Telnet协议细节不是本篇讨论的重点,后续会有专门的 Lwip协议栈 系列博客说清楚.本篇要说清楚的是内核如何接待远方的客人.
小帅聊鸿蒙
2025/04/01
810
OpenHarmony 内核源码分析(远程登录篇) | 内核如何接待远方的客人
《Elasticsearch 源码解析与优化实战》第4章:节点启动和关闭
本章分析单个节点的启动和关闭流程。看看进程是如何解析配置、检查环境、初始化内部模块的,以及在节点被“kill”的时候是如何处理的。
HLee
2021/06/03
1.2K0
《Elasticsearch 源码解析与优化实战》第4章:节点启动和关闭
Linux 优化
 一、最小化原则 (1)安装最小化 (2)开机启动服务最小化 (3)操作最小化 (4)权限最小化 (5)配置参数合理,不要最大化 二、端口优化   远程登录的端口默认是22号端口,这是大家都知道的。所以为了安全着想,我们要修改服务器远程连接端口,这样黑客就不好破解你的linux服务器。同时,默认登录的用户名为root,我们可以修改配置,使远程不能使用root登录。方法,更改ssh服务远程登录的配置。 vim /etc/ssh/sshd_config #更改前先备份 Port 22 #修改端口(随便改为其
用户1173509
2018/01/17
1.6K0
优化爬虫程序使用代理IP时出现的TIME_WAIT和CLOSE_WAIT状态
为了提高爬虫程序的效率,我们通常使用代理IP来同时访问多个网站,避免被封禁。但是,使用代理IP也会带来一些问题。在Linux系统下,我们经常会遇到TIME_WAIT和CLOSE_WAIT状态的问题。
jackcode
2023/05/05
3940
优化爬虫程序使用代理IP时出现的TIME_WAIT和CLOSE_WAIT状态
优雅地终止:Graceful Shutdown指南
您是否曾经因沮丧而拔掉电脑的电源线?虽然这似乎是一个快速解决方案,但它会导致数据丢失和系统不稳定。在软件世界中,存在类似的概念:硬关闭。这种突然的终止会导致与物理对应物相同的问题。值得庆幸的是,有一种更好的方法:优雅关闭。
云云众生s
2024/07/18
1810
优雅地终止:Graceful Shutdown指南
Go语言项目结构指南:从代码包的角度看如何编写高质量的Go代码
Go语言是一种简洁、高效、可靠的编程语言,它支持并发、垃圾回收、模块化等特性,适用于各种场景和领域。Go语言的源码是以代码包为基本组织单位的,一个代码包可以包含多个源码文件,每个源码文件都必须在文件头部声明自己所属的包名。代码包可以被其他代码包导入和使用,实现代码的复用和模块化。
运维开发王义杰
2023/08/10
2520
Go语言项目结构指南:从代码包的角度看如何编写高质量的Go代码
[026]Zygote中Socket通信能否替换成Binder通信?
大家都知道App进程是AMS通过通过Socket通信通知Zygote孵化出来的,借用gityuan的图就是图中的第2步,能否用Binder通信替换Socket通信?我们只讨论技术上实现的可能性,不讨论两者性能上的差异。
王小二
2020/06/08
2K0
[026]Zygote中Socket通信能否替换成Binder通信?
【GO入门到放弃】Golang标准库-syscall
在开始介绍go sys call 库之前先介绍下Linux syscall的几个概念
五分钟学SRE
2023/12/05
2.2K0
【GO入门到放弃】Golang标准库-syscall
Linux高并发内核参数优化
如非必须,关掉或卸载iptables防火墙,并阻止kernel加载iptables模块。这些模块会影响并发性能。
陳斯托洛夫斯記
2022/10/27
4.4K0
推荐阅读
相关推荐
EasyGBS新内核版本摄像头流量统计为零的优化方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验