服务器——看门狗

看门狗(Watchdog)是服务器中负责系统级故障自愈 的硬件或软件机制,核心使命就一句话:当服务器系统失去响应时,自动将其重启,避免无人值守下长期挂死

🎯 核心工作原理

看门狗本质上是一个倒计时定时器

  1. 系统启动后,看门狗定时器开始倒数

  2. 正常运行时,系统里的看护程序会定期"喂狗"(重置倒计时)

  3. 一旦系统崩溃、死锁、内核卡死------喂狗程序也无法运行

  4. 倒计时归零 → 看门狗触发预设动作(通常是硬复位 / 断电重启

💡 类比:就像个保姆盯着你,要求你每隔几秒眨一次眼,你一直眨说明还活着;要是停了超过阈值,保姆直接把你泼醒。

🔧 服务器中的具体形态

硬件看门狗

  • 集成在 BMC(基板管理控制器,如 IPMI/iDRAC/iLO)或主板管理芯片上

  • 独立于主 CPU 运行,即使主机完全死机也能触发复位

  • 通过 GPIO 引脚或电源控制线直接拉低 RESET 信号

软件看门狗

  • 内核级定时器(Linux 下如 softdogwatchdog内核模块)

  • 依赖系统本身还能跑定时器中断,对内核完全挂死的场景不如硬件可靠

应用层看门狗

  • 监控特定服务进程,崩溃则重启该服务(如 systemd 的 Restart=always

📋 典型应用场景

场景 看门狗的作用
内核 panic 后卡住 硬件看门狗硬复位整机
系统负载极高导致无响应 超时后强制重启恢复服务
远程无人值守节点 避免人工到场拔电
关键业务 7×24 运行 保证最短故障恢复时间(MTTR)

⚙️ Linux 服务器上的实践

复制代码
# 加载硬件看门狗模块(以 iTCO 为例,Intel 平台常见)
modprobe iTCO_wdt

# 安装用户态喂狗程序
apt install watchdog
systemctl enable watchdog && systemctl start watchdog

配置文件 /etc/watchdog.conf中可以定义:

  • watchdog-device = /dev/watchdog------ 指定设备

  • timeout = 30------ 30 秒超时

  • test-binary = /usr/local/bin/health-check.sh------ 自定义健康检查

  • realtime = yes------ 实时优先级喂狗

📌 关键设计要点

⚠️ 三个容易踩坑的地方

  1. 超时时间要合理:太短会因瞬时高负载误触发重启;太长则故障恢复慢。一般设 30-120 秒

  2. 喂狗程序优先级要高:避免被系统调度饿死,否则会"假死真重启"

  3. BMC 看门狗比 OS 看门狗更可靠:OS 级软看门狗在内核完全死锁时可能失效,而 BMC 是独立 ARM 小电脑

在数据中心里,看门狗通常和 **BMC 的"自动重启策略"**​ 配合,形成"OS 软看门狗 + BMC 硬看门狗"的双保险,确保单机故障能在分钟级自愈,这也是为什么你很少见到大规模服务器集群需要人工频繁去机房按电源键的原因。

相关推荐
不怕犯错,就怕不做8 分钟前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
richdata34 分钟前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
weixin_416667961 小时前
【无标题】
运维·服务器·网络
一池秋_2 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
惜离殇2 小时前
从零开始的敲代码生活--Linux应用软件(文件操作基础1)
linux·c语言·文件操作·标准io
上海云盾-小余3 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠4 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件4 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
闲云野鹤在人间4 小时前
OpenStack架构介绍和安装流程
linux·网络·架构·openstack
我命由我123455 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime