云电脑防休眠实战:15 分钟外部验活 + 盒内心跳兜底
一、背景:一台总爱睡觉的云电脑
最近在用一台云端 Ubuntu 桌面做事:4 核 CPU、约 8G 内存、40G 磁盘,平时够用。唯一的毛病是它太爱睡觉——闲置不到 40 分钟就深度休眠。休眠本身不丢东西,文件和登录都在,唤醒也快,但每次要用都得先等它醒,手头的事就被打断。解决办法不是让它不睡,而是让它一直有人惦记:每 15 分钟从外面验一次活,睡了就叫醒。
二、验活不能只看状态标签
第一版保活只查状态:显示 running 就算活着。很快就被现实打了脸——有一次状态明明写着 running,连续两轮真命令都没有回包,机器其实已经不响应了。教训是:状态标签只是它自己报的,活没活要靠它干活来证明。现在的规则是 running 时跑一条真实的 date 命令,能回出它自己的时间才算活;回不出来就记一轮异常,连续两轮异常才报警,单轮波动先不惊动人。
三、唤醒只用一种方式
唤醒也有讲究。实测下来,带等待的强启动会挂五分钟左右然后报错,那次之后反而是轻量唤醒在 30 秒内把它救了回来。所以纪律定死:只在休眠、缺席或 failed 时唤醒,而且只用不等返回的轻量唤醒;正在启动的机器绝不干预,它最慢一次启动花了将近 20 分钟,催它只会添乱;running 的机器更不许硬唤醒,状态没问题时唤醒就是多余操作。
四、盒子里面再留一层心跳
外部保活只能看到外面,盒子里面再留一层心跳做兜底:一个用户级 systemd 服务每 5 分钟往日志里写一行时间戳,开机自启、会话退出也不停。以后哪段时间盒子睡过,看日志断档就知道,不用猜。两层分工很清楚:外层负责叫醒,内层负责对账。
五、也有外部保活救不活的时候
11 月 8 日上午就是一例:09:17 最后一次验活成功,之后盒子进入 failed 状态,10:02 和 10:17 两轮唤醒都没把它拉起来。这说明保活不是万能的——休眠能叫醒,failed 未必能。遇到这种情况就别再机械地重复唤醒,该去管理后台看一眼真实状态,或者试一次强启动,再决定下一步。
六、落地检查清单
验活看真命令回包,不看状态标签;单轮异常不报警,连续两轮再报;唤醒只用轻量方式,正在启动的机器不干预,running 的机器不硬唤醒;盒内留一个 5 分钟心跳日志,用断档反推休眠时段;failed 状态连续唤醒无效时停下来,去后台确认,别无限重试。
小结
防休眠的核心就两句话:用真命令证明活着,用最轻的方式叫醒。状态标签会骗人,强启动会添乱,留好心跳日志,睡过几回心里都有数。
- 点赞
- 收藏
- 关注作者
评论(0)