
做工业上位机开发的,大概率都经历过这种半夜惊魂:凌晨两三点接到产线值班电话,说上位机数据不动了,界面点没反应,整条产线卡着等恢复。值班的操作工只会看屏幕,根本不会重启程序,等你穿好衣服连上远程,半小时已经过去了。
更头疼的是程序假死:进程还在任务管理器里好好躺着,但UI线程早就死锁了,业务逻辑停了几个小时没人发现。等到早班交接才暴露,一晚上的产能报废,追责下来还是开发背锅。
很多人试图解决这个问题,但方案大多治标不治本:
- 加个定时任务每天凌晨重启一次:只能防内存泄漏,随机崩溃根本赶不上
- 写个简单的守护进程:只会检查进程在不在,死锁、业务假死完全检测不到
- 靠远程桌面盯着:人总有睡熟的时候,夜班总不能安排专人守着电脑
经过十几个工业现场项目的踩坑和迭代,我落地了一套守护进程+三级看门狗的完整自愈体系。从最外层的进程监控,到业务层的运行状态检测,再到底层的通信链路监控,层层把关,逐级兜底。小异常模块自动重置,严重问题程序自动重启,极端情况甚至触发系统重启。这套方案上线后,我负责的产线上位机已经连续半年没有因为软件崩溃导致过夜班停产。
一、先搞懂:为什么单一层守护总是不够用?
在讲具体实现之前,先聊清楚一个核心问题:为什么你写的守护进程经常“失灵”?
工业上位机的异常,从来不止“进程闪退”这一种。按严重程度从浅到深,至少分




