背景
实时画面服务长期运行中难免遇到崩溃、编码失败、端口被占用等异常。缺少自动恢复会导致长时间不可用。本文总结内网场景下的自动恢复策略与实现建议。
常见异常类型
- 采集失败:设备断开、权限被收回、屏幕锁定。
- 编码失败:硬编初始化失败、软编线程异常退出。
- 端口占用:重启后被其他进程占用,启动失败。
- 内存/句柄泄漏:长时间运行后崩溃或 OOM。
- 网络异常:短时断网、DNS 失败。
恢复策略原则
- 先检测再重试:明确错误类型,避免盲目重启。
- 退避重试:指数退避或固定间隔,防止重启风暴。
- 有上限与告警:尝试超过阈值后告警,不无限循环。
- 最小化影响:重启时释放资源、清理句柄,避免僵尸进程。
进程级看门狗
- 采用 supervisor/systemd/pm2 等进程管理:进程退出即重启。
- 配置最大重启次数与时间窗口,超过则告警。
- 记录退出码与 stderr,便于定位根因。