服务器——看门狗

看门狗(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 硬看门狗"的双保险,确保单机故障能在分钟级自愈,这也是为什么你很少见到大规模服务器集群需要人工频繁去机房按电源键的原因。

相关推荐
好评1242 小时前
【Linux】进程信号
linux·运维·服务器
zhangrelay2 小时前
ROS 2 Lyrical 第4章 URDF机器人建模与Gazebo Garden仿真
linux·笔记·学习·ubuntu·机器人·ros2
wuminyu2 小时前
JVM利用io_uring优化堆外内存性能原理剖析
java·linux·c语言·jvm·c++
cakeism8252 小时前
Gitee DevOps 平台定位、核心能力与选型指南
运维·gitee·devops
xianyuCcCcCCCcc2 小时前
Nginx 深度解析:从基础架构到反向代理与负载均衡实战全解
linux·运维·nginx·bash·负载均衡
qq_25294131683 小时前
列车车轮缺陷智能检测数据集:800张图像、4大类别,助力铁路安全运维
运维·人工智能·安全·yolo·目标检测·计算机视觉·视觉检测
爱折腾的小码农3 小时前
解决Navicat 17 Premium Lite在Linux上运行报错“LIBSYSTEMD_251‘ not found”问题
linux·运维
Doraemomo3 小时前
Linux编程-标准IO和系统IO
linux·运维·服务器
骇客野人3 小时前
Linux 查看 Java 进程常用命令
java·linux·运维
睡一觉就好了。4 小时前
Linux 信号机制
linux·运维·网络