机房精密空调故障,服务器集群怎么就过热降频了?

问题背景

公司自建数据中心内有 5 个标准机柜,约 30 台物理服务器(含数据库、虚拟化主机、备份存储)。机房制冷由两台 Emerson 精密空调(一主一备)提供,设定温度 22°C,温差 ±2°C。机房环境监控通过 Zabbix 采集温湿度传感器的 SNMP 数据。

故障现象

12 月 13 日上午 10:20,运维收到用户反馈:公司内部 OA 系统、ERP 系统、企业邮箱全部响应极度缓慢,页面加载时间从正常的 1-2 秒变成 30-60 秒。监控平台显示全业务 P99 延迟飙升 20-30 倍。

登录虚拟化平台 vCenter 查看宿主机:

1
2
3
4
5
Host: esxi-01.corp.local
CPU Usage: 35%
CPU Ready: 18% (正常应 <5%)
Memory Usage: 72%
Alarm: Host CPU thermal throttling active

CPU 热节流(Thermal Throttling)被触发! 所有 ESXi 主机都在强制降频运行,原本 3.0GHz 的 CPU 被限制在 1.2GHz,虚拟机中的应用程序性能被严重拖慢。

排查过程

第一步:确认机房温度

跑到机房门口,开门瞬间热浪扑面——室内温度计显示 48°C

Zabbix 监控的告警时间:

1
2
3
4
10:20:00  机房温度 = 28°C  (超过25°C阈值,未告警?)
10:25:00  机房温度 = 35°C  (仍无告警)
10:30:00  机房温度 = 45°C  (仍无告警?)
10:35:00  机房温度 = 48°C  (告警终于发出) # 延迟了15分钟!

第二步:检查空调状态

1 号精密空调——完全停机。面板无任何指示灯。2 号备用空调在运行,但出风口温度仅 28°C(正常应为 16-18°C),实际制冷能力严重不足。

第三步:分析 1 号空调停机原因

查看空调控制器日志:

1
2
2023-12-13 10:15:32 Compressor High Pressure Alarm
2023-12-13 10:15:32 System Shutdown (Safety)

压缩机高压保护——空调因室外机散热受阻导致压缩机出口压力过高,触发安全停机。

室外温度 -12°C,打开室外机检修面板——风扇叶片被一层厚厚的冰冻住了,完全无法转动。北京冬季夜间温度降到 -15°C,空调室外机底部的排水孔被冰堵住,融化的冷凝水无法排出,在风扇轴承上结冰。

第四步:为什么 2 号空调制冷不足?

2 号空调虽然在运行,但制冷剂(R410A)压力只有正常值的 60%。检查发现制冷剂管路接口处有微漏,过去半年逐步泄漏但未补充。低制冷剂量下制冷能力大打折扣——2 号空调虽然亮着灯,实际起不到"备用"的作用。

第五步:为什么 Zabbix 告警延迟了 15 分钟?

1
2
3
$ cat /etc/zabbix/zabbix_server.conf | grep -E "StartPollers|Timeout"
StartPollers=5
Timeout=30

温度传感器的 SNMP 轮询间隔为 3 分钟。关键是告警触发条件:

1
Trigger: avg(机房温度, 15m) > 28°C

触发条件使用了 avg(15m)(15 分钟均值)——温度上升期间前几分钟的低值拉低了平均值,直到均值突破 28°C 才触发告警,而实际温度已经到 48°C 了。

解决方案

紧急物理降温

  1. 打开机房所有门窗通风,搬入 2 台工业风扇辅助对流
  2. 紧急关闭非核心服务器:将测试环境和开发环境的物理机全部关机,降低整体热负载
  3. 手动除冰:用热水浇融 1 号空调室外机风扇上的冰层,清理排水孔

冰层清除后,1 号空调恢复正常运行,机房温度在 20 分钟内回落到 28°C。CPU 热节流自动解除,业务 P99 延迟逐步恢复。

后续整改

  1. 1 号空调加装低温套件:包含加热带(防止排水孔结冰)和变速风扇控制器
  2. 2 号空调补充制冷剂:查找泄漏点并修复,补充制冷剂至标称压力
  3. Zabbix 告警规则修正
1
2
3
4
5
# 改为:最近一次温度值(非均值)超过28°C立即告警
Trigger: last(机房温度) > 28°C

# 增加温度变化率告警
Trigger: (last(机房温度) - last(机房温度, 60s)) > 3

根因分析

直接原因:精密空调室外机排水孔在冬季严寒天气下结冰堵塞,风扇被冻住 → 压缩机高压报警停机 → 室内温度快速上升 → 服务器自动降频保护。

深层原因:

  • 精密空调缺少低温环境适配(未安装低温套件)
  • 备用空调制冷剂泄漏,关键时刻无法满负荷运行
  • Zabbix 温度告警使用 15 分钟均值,延迟了紧急告警
  • 机房缺乏温度传感器的多点冗余部署

预防措施

  1. 精密空调低温套件:冬季前安装加热带、变速风扇等低温适配组件
  2. 备机制冷能力保障:每季度检测备机制冷剂压力,确保备机随时可用
  3. 实时温度告警:告警规则改用 last() 实时值 + 变化率双触发
  4. 多点温感冗余:机柜顶部、中部、底部各部署温度传感器
  5. 冬季巡检 SOP:11 月-3 月每月检查室外机排水孔和风扇轴承结冰情况
  6. 应急演练:机房温度异常应急预案(工业风扇、开门通风、关非核心设备)

总结

机房空调故障是运维能遇到的最"低技术含量"但又最致命的事故之一——不需要什么高深的网络协议或分布式系统知识,它就是物理世界的一个设备坏了。但它的破坏力是全局性的:一台空调停机,30 台服务器的 CPU 全部被迫降频,所有业务线的性能同时崩盘。在运维的世界里,对物理基础设施的监控不能有任何侥幸——温度告警的延迟、备机制冷剂的泄漏,都可以被"看起来正常"的表象掩盖,直到故障真正爆发。

使用 Hugo 构建
主题 StackJimmy 设计