当前位置: 首页 > news >正文

vss-performance 长任务Panic隔离与协程恢复

07 长任务 Panic 隔离与协程恢复

试用安装包下载 | SMS | 在线演示

项目地址:https://github.com/openskeye/go-vss

背景

VSS 长期运行,任何nil 指针、越界、第三方库 bug都可能触发 panic。若 panic 发生在唯一的 SIP 发送循环或 Catalog 定时器里,会导致整类信令崩溃。本仓库对「长生命周期任务」采用defer recover + 休眠重启的策略,把故障限制在单次崩溃,并自动拉起

项目中的做法

SipProc.DO包装每个SipProcLogic

server/sip.goSipProc.DO对每个注册的 Logic(FetchDataLogicSendLogicCatalogLoopLogic等)启动 goroutine,并在参数里注入RecoverCall

  • recover()捕获栈;
  • 打日志;
  • time.Sleep(1 * time.Second)防止 panic 死循环刷日志;
  • 递归调用p.DO(options...)把同一组任务整批重启

DO: 每个 Logic 一个 go

Logic.DO主循环

panic

recover + LogError + Stack

Sleep 1s

p.DO(options...) 重启整批

与「子 proc」的关系

部分 Logic 内部还有子 goroutine(如CatalogLoopLogicgo l.proc()),子协程若 panic 且未 recover,仍会进程崩溃。当前主要防护在外层 DO;对特别关键的proc,可再加一层 recover(后续增强点)。

要点

  1. 1秒退避:避免故障依赖(如 DB 挂了)时CPU 空转 + 日志洪峰
  2. 整批重启:一次DO重启所有 Logic,需保证无全局脏锁;若某 Logic 重启两次可能重复 Listen,当前 SIP Listen 在 main 不在此DO内,风险主要在业务循环
  3. 根因仍需修:recover 是保命不是修复;线上应配告警对接日志关键字Recover

相关代码路径

  • core/app/sev/vss/internal/server/sip.goSipProc.DORecoverCall
  • core/app/sev/vss/main.go— 注册的所有gbs_proc/procLogic
http://www.zskr.cn/news/1406377.html

相关文章:

  • 鸣潮自动化终极指南:3个技巧让你每天节省2小时游戏时间
  • 如何为你的应用快速接入多模型能力使用Taotoken的Python调用示例
  • 我的机械臂动起来了:基于STM32F103和SG90舵机,从接线到代码调试的全记录
  • 基于云通信与AI语音技术构建7x24小时智能电话接待系统
  • VSCode新手必装:这5个插件让你的前端开发效率翻倍(附详细配置)
  • 构建可靠多智能体系统:记忆、验证与工具化三大支柱实践
  • AI芯片分布式系统:从固定代理到可插拔内核:DLOS Kernel v1.3 中的微内核与热插拔 Agent 系统
  • vss-performance 有界Channel与并发容器容量
  • 当Modbus Poll/Simulator调试失败时:手把手教你用Matlab 2018b+模拟PLC排查通信故障
  • Gemma 4多令牌预测头实测:超越通用基准的生产环境评估指南
  • 从零上手:MRS集成开发环境下的ARM/RISC-V单片机烧录实战指南
  • 锐捷ICT大赛拿奖学长亲述:从零备赛到全国季军的完整路线图(附资源清单)
  • 基于马尔可夫链预测与MPC的混动客车能量管理策略工程实践
  • 开源 AI 智能体 OpenClaw 搭建教程|零代码简易配置
  • 构建具备批判性思维的AI智能体:从RAG架构到Anti-Sycophancy实践
  • 如何用Playnite打造终极游戏库:免费开源的游戏管理神器
  • 企业服务众包平台推荐与排名:跨境电商、设计、开发等多品类正规平台评估白皮书(2026版) - 商业科技观察
  • 告别SDK Manager刷写失败:手把手教你用命令行搞定Jetson Linux系统安装
  • DSView:让电脑变身专业仪器的终极开源解决方案
  • 昇腾编译核心揭秘——GE(图引擎)三阶段流水线架构深度剖析
  • 为Claude Code配置Taotoken作为稳定后端解决访问限制问题
  • ADB 驱动会接管 USB 控制器(UDC)
  • Multisim仿真心得:我是如何给PMOS驱动电路加上“光耦隔离”这颗定心丸的
  • 告别踩坑!Windows 10/11 本地一键部署RocketMQ 4.8.0及控制台(保姆级图文)
  • 欧盟AI法案 vs 美国EO 14110 vs 中国《生成式AI管理办法》,ChatGPT部署风险地图,一图锁定你的合规盲区
  • RISC-V SPIKE模拟器实战:从‘Hello World’到运行自定义C程序
  • Taotoken 如何帮助内容创作团队实现多模型协同与成本精细化管理
  • FileUtil 文件管理篇:mkdir、copyFile、rename、unlink 一次搞定
  • 从命令行到集群:解锁Kettle三大核心工具(pan/kitchen/carte)的自动化与调度实战
  • 3分钟学会自动化strm文件生成:告别手动创建,拥抱智能流媒体管理