从空置机场到闲置云资源:基础设施成本治理的止损策略
2026/9/13 22:36:24 网站建设 项目流程

你大概率刷到过类似标题:某机场因为建成后使用率过低,长期处于近乎空置的状态,每天仍然要亏掉约 110 万美元。先不讨论这个数字到底是新闻口径,还是项目内部的现金测算,真正值得技术团队关注的,是它背后的那套模型:一个重资产项目一旦被启动,无论业务有没有跑起来,固定成本都会按天发生。

这个模型放在服务器、GPU 集群、云资源和内部平台上,几乎每天都能看到。很多团队习惯了“资源先买好、服务先启动、容量先预备”,然后因为业务没起来或者需求估错,让一批节点长期空转。投入产出表上看起来是“项目还没有正式上线”,实际上账单是按小时在走的。

这篇文章不写具体的机场规划,而是把“空置机场为什么不赚钱”拆开,映射到基础设施成本治理上。读完你会得到一套可以落地的判断方法:怎么识别空置资源、怎么统计闲置成本、怎么确定缩容和停机的边界,以及哪些资源看起来空置但实际上不能动。

1. 先说结构:机场“空置一天亏 110 万美元”是怎么亏的

机场这类基础设施有一个共同特点:前期建设投入巨大,建成后的成本结构非常刚性。跑道、航站楼、机坪、供电、排水、消防、通信、安保系统,这些设施一旦建成,并不会因为你今天只有一个航班就自动停掉一半。

可以把它简化成下面这张成本结构表:

成本类型与航班量的关系典型例子空置时是否可避免
折旧与财务成本不随航班量变化建设贷款利息、设备折旧基本不可避免
基础设施维护只在维护频次上略有变化跑道巡检、航站楼保养、机电设备年检很难压缩到零
基础能源消耗弱相关候机楼照明、空调、消防监控、弱电系统可降低,但无法完全关闭
最低人力配置弱相关安保、消防值班、设备运维、行政值守可压缩,但有关键岗位
随业务量变化的成本强相关地勤服务、值机柜台、行李分拣、商业补货业务不跑时可以少发生
收入端强相关起降费、旅客服务费、停车、商业租金航班少时大幅下降

所谓“空置一天亏 110 万美元”,通常不是指这一天的现金支出了 110 万美元,而是指把一个周期内的亏损总额折算到每一天。这里面既包含了折旧和财务成本,也包含了维持设施可用状态而必须支付的维护、安保和人员成本。

真正有意思的问题是:既然亏损已经这么明显,为什么不能直接把机场停掉?

答案也很直接:停掉一个机场不是拔电源那么简单。机场基础设施需要保持适航状态,空域申请、消防等级、设备校验、人员资质都需要延续。一旦进入长期停航,重新恢复的成本可能比继续维持更高。所以在很多情况下,决策者会选择“低成本维持”,而不是彻底关停。

这个决策模型,和 IT 系统里的资源治理几乎一模一样。

2. 技术团队里的“闲置机场”:为峰值准备,却长期低负载运行

如果你负责过成本治理,一定见过这几类现象:

第一类是服务器预配过度。项目立项时按“未来三年增长”估算 CPU 和内存,结果业务上线半年,平均负载还不到 10%。这些机器每天开着,电费和折旧没有停下来。

第二类是 GPU 资源闲置。为了跑模型训练或推理服务,提前采购了高端显卡。业务试运行阶段使用的是小模型,显存占用很低,但资源已经被独占,其他任务也插不进来。

第三类是云上预留资源没有回收。数据库备库、测试环境、预发环境、临时用的 ECS,业务部门说“可能还要用”,于是长期保留。没人定期审计这些资源的使用率,结果每个月账单都有几千上万的成本沉淀在里面。

第四类是服务“假运行”。进程一直在,端口也开着,健康检查也过了,但没有任何外部流量。这种状态比完全停掉更隐蔽,因为它消耗了资源,却不会在监控大盘上形成一个明显的错。

这些现象的共同点在于:资源已经按“峰值容量”准备完成,但实际负载远远低于设计容量。资源还在账单上,成本还在发生,价值却没有产生。

技术团队可以观察到的指标,和机场非常类似:

资源对象观察指标判断空置的方法
云服务器CPU、内存、网络流量连续 30 天平均利用率低于阈值
GPU 服务器GPU 利用率、显存占用、功耗连续多天利用率趋近于 0
数据库QPS、连接数、慢查询、磁盘 IO无业务调用但连接仍活跃
K8s 节点Pod 数量、CPU/内存水位节点长期处于 Ready 但无明显调度
对象存储读写次数、存储量变化只有少量写入,几乎没有读取
API 服务QPS、请求延迟、错误率运行正常但请求量为 0

这些指标不需要一次全部覆盖。先从成本占比最高的资源入手,逐步把“空置资源清单”捞出来,效率最高。

3. 识别空置资源的数据采集思路

这里给出一套通用的采集方法,不依赖具体云厂商或监控系统。

第一步,先划分资源池。按项目、环境、业务模块给资源打标签。这一步很重要,没有标签的资源很难做成本归因。标签至少包含项目名、负责人、资源类型、计费类型、允许停机时段。

第二步,确定采集频率。主机资源建议 1 分钟或 5 分钟采一次,GPU 资源建议 1 分钟采一次,数据库可以按连接数和 QPS 抽样。采样周期拉长到 30 天,因为只看一天的负载容易误判。

第三步,设置空置阈值。阈值不能随意定,否则容易把正常业务误伤。一个常用做法是:连续 30 天内,该资源的平均利用率长期低于 10%,且没有明显周期性峰值,则标记为疑似空置。

第四步,结合业务单据做二次判断。如果监控系统显示资源利用率很低,但要确认是否真的没有请求进入,可以看网关日志或调用链记录。有些服务会把数据直接放在内存里处理,CPU 不高但业务很关键,这种资源不能简单判定为空置。

第五步,计算闲置成本。成本不是单纯看资源单价,还要看这段时间里它占用多少容量、是否能被其他任务复用、是否需要额外电力和带宽。

在 Linux 主机上,可以通过几条通用命令查看基础数据:

# 查看 CPU 核数和平均负载,持续观察时建议配合采集脚本 lscpu # 按 2 秒间隔连续采样 30 次,观察 CPU 空闲比例 mpstat -P ALL 2 30 # 查看内存使用情况 free -h # 查看磁盘读写是否活跃 iostat -x 2 30

如果是 GPU 服务器,可以用 nvidia-smi 采集显存和利用率:

# 查看 GPU 当前利用率、显存占用、功耗 nvidia-smi # 按秒采集 GPU 利用率并追加到日志,方便后面分析 nvidia-smi --query-gpu=timestamp,index,utilization.gpu,memory.used,power.draw \ --format=csv -l 60 >> gpu_usage.log

如果是 Kubernetes 环境,可以用 kubectl top 查看节点和 Pod 的资源水位:

# 查看节点整体 CPU 和内存使用量 kubectl top nodes # 查看所有命名空间下的 Pod 资源使用量 kubectl top pods -A

需要强调的是,这些命令只是采集数据的第一步。真正判断一个资源是否空置,要综合 30 天趋势和业务调用链,而不是只看当前一秒钟的数字。

4. 一个简单的“30 天空置成本”分析脚本

先给出一份演示用的资源清单,字段包括资源 ID、资源名称、类型、每日成本、近 30 天平均利用率、是否可缩减。这里的数值只是演示逻辑,不是某个真实系统的数据。

resource_id,resource_name,type,daily_cost,avg_utilization,reducible gpu-001,GPU推理节点A,gpu,520,0.03,1 db-001,线上数据库备库,database,180,0.08,1 web-001,旧版官网文档页,web,40,0.12,0 redis-001,历史活动缓存,redis,60,0.02,1

下面这段 Python 脚本会读取这份清单,筛出平均利用率低于阈值的资源,并估算 30 天内的闲置成本。

import pandas as pd def analyze_idle_cost(csv_path: str, idle_threshold: float = 0.1) -> pd.DataFrame: """ 读取资源清单,筛选疑似空置资源并估算 30 天闲置成本。 闲置成本只是粗略估算,用于排序,不代表精确金额。 """ df = pd.read_csv(csv_path) # 估算 30 天内的闲置成本 # 闲置比例 = 1 - 平均利用率 df["idle_ratio"] = (1 - df["avg_utilization"]).clip(lower=0) df["idle_cost_30d"] = df["daily_cost"] * df["idle_ratio"] * 30 # 筛出低于利用率阈值的资源 idle_df = df[df["avg_utilization"] < idle_threshold].copy() return idle_df.sort_values("idle_cost_30d", ascending=False) if __name__ == "__main__": result = analyze_idle_cost("assets_cost.csv", idle_threshold=0.1) print(result[["resource_name", "type", "daily_cost", "avg_utilization", "idle_cost_30d"]].to_string(index=False))

运行结果会输出类似下面的表格:

resource_name type daily_cost avg_utilization idle_cost_30d 历史活动缓存 redis 60 0.02 1764.0 GPU推理节点A gpu 520 0.03 15132.0 线上数据库备库 database 180 0.08 4968.0

如果只看单日成本,GPU 节点 520 元一天并不算特别突出。但当它连续 30 天空转时,折算出来的闲置成本就变成了一个需要被关注的数字。

这个脚本的逻辑本身很简单。真正要发挥作用的是筛选条件怎么定:什么资源可以被自动关闭,什么资源只能缩容,什么资源必须继续维持运行。这个判断不能只靠成本管理员完成,需要结合业务负责人、运维负责人和财务数据一起核对。

5. 容量决策:预留、热备、缩容和停机的边界

机场不能因为旅客少就把候机楼全拆了,因为航季和突发事件随时可能带来流量高峰。技术系统也一样,不能单纯以“平均利用率低”作为关停资源的唯一标准。

在实际治理中,资源通常会处于下面四种状态:

状态典型表现决策动作判断要点
正常承载业务利用率稳定,有真实请求维持现状,持续监控观察长期趋势,不要只看单点
低频但必须保持可用利用率不高,但业务要求随时响应保留最小节点,关闭多余副本明确服务等级和响应时间
可随时拉起的备机平时不承担流量,只在故障时接管优先考虑按需启动,而不是常驻验证自动拉起时间是否满足要求
已无业务需求长期无请求,无明确负责人先备份,再缩容,最后关停需要保留数据和审计记录

很多团队容易犯一个错误:把所有低利用率资源都看成“应该关掉的东西”。实际上,有些资源承担的是突发流量兜底,有些是容灾节点,有些是需要保持心跳的调度中心。在关停之前,必须回答几个问题:

这个资源是否在业务链路中承担了请求入口?如果关停,相关服务是否会自动降级?恢复启动需要多长时间?启动后是否需要重新加载大量数据?是否存在外部系统定时回调?

如果这些问题的答案不清晰,就应该先做“缩容”而不是“彻底停机”。

所谓缩容,是把资源规格降低或者把副本数减少,保留最小可用容量的同时降低固定成本。例如 8 核 64G 的实例降到 2 核 8G,5 个 GPU 推理实例保留 1 个,数据库从一主两备降为一主一备。缩容通常比停机更安全。

当缩容到极限后,如果业务仍然没有恢复迹象,再启动停机流程。停机流程要包含数据备份、配置快照、责任人确认、预期恢复时间、重启演练步骤。

6. 排查“看起来空但不能关”的常见问题

闲置资源治理最大的难点不是计算成本,而是判断一个资源是否真的可以被释放。下面这张表整理了常见误判和排查思路。

问题现象可能原因排查方式解决方案
CPU 利用率很低,但数据库连接数很高存在长连接池,业务请求少但连接没有释放查看连接来源、慢查询、活动会话清理空闲连接,确认是否有定时任务
GPU 利用率接近 0,但服务不能被停模型加载耗时长,每次推理前要重新加载权重查看服务日志中的模型加载时间保留一个常驻推理实例,关闭其他副本
白天利用率低,夜间偶尔有高峰存在按天或按周的批处理任务按 24 小时和 7 天维度观察把批处理任务集中调度,避免全天预留资源
资源没有流量,但账单持续增加绑定了固定公网 IP 或独立存储卷检查网络和磁盘账单释放闲置 IP,解绑不用的存储
历史项目资源没人认领缺乏标签和负责人根据项目标签回溯负责人建立下线审批,无人认领则进入待回收池
运维担心“关掉后起不来”缺少启动手册和验证流程做一次完整重启演练编写自动恢复脚本并定期测试

在治理过程中,最危险的并不是资源浪费本身,而是有人拍脑袋决定“这个没人用,直接删掉”,结果影响了下游接口。所以在执行任何关闭操作前,先看调用链,看 30 天访问日志,看是否有外部定时任务访问,再看系统告警是否会因为该资源下线而触发误报。

更稳妥的方式是设置“观察期”:先把资源从对外路由中摘除,业务不直接使用,但保留进程运行 3 到 7 天。如果观察期内没有任何异常,再进入关停或释放阶段。

7. 团队落地“闲置治理”时的检查清单

如果你打算把空置资源的成本控制落到团队里,不建议一开始就搞大而全的平台。下面是一套最小可执行的检查清单。

先列资源清单。把项目名、环境、资源类型、规格、成本、负责人、预计最多闲置天数全部列出来。清单里没有的资源,不纳入本次治理范围。

再采集 30 天数据。资源运行至少 30 天后,再讨论它是不是空置。刚上线两周的项目和一整年没有流量的项目,处理方式完全不同。

然后设置两级阈值。低风险阈值用于提醒,例如平均利用率低于 10% 且持续 7 天。高风险阈值用于强制收敛,例如平均利用率低于 3% 且持续 30 天,且业务负责人确认没有任何计划流量。

处理顺序建议先小后大:测试环境最容易动,先清理历史测试资源;然后处理预发环境和灰度环境;最后处理生产环境。生产环境的每一次变更都要有回滚预案。

对于真正需要长期保留空转服务的场景,至少要做到:

  • 给进程加上资源限制,避免空转时意外占用全部 CPU 或内存。
  • 设置自动休眠策略,例如连续 24 小时无请求时自动降级到最小模式。
  • 记录每次启动原因和启动时间,避免“自动拉起”后再次被遗忘。
  • 把启动命令和依赖关系写清楚,避免运维变动后没有人能恢复。

还要注意合规边界。如果资源中存有用户数据、模型权重、日志、密钥等敏感信息,即使资源空闲,也不应该在没有备份的情况下直接删除。关停前要执行数据归档,归档完成后至少保留一段时间,并记录审计日志。

8. 关于成本意识:把“空置成本”放到决策入口

空置机场的损失很难追回,是因为建设阶段已经投入了大量固定成本。技术系统里的浪费,很多也发生在资源规划和预算申请阶段。

一个新的项目上线前,建议先回答几个成本问题:

  • 按现有业务量,最小可用资源是什么?
  • 上线后第一周的流量预估是多少?
  • 如果流量没有达到预期,什么时候触发缩容?
  • 如果业务果然失败,释放资源的负责人和流程是谁?

不是每个人都愿意在项目启动前讨论失败场景。但成本控制恰恰需要这个“反向场景”来兜底。如果项目一直不产生收入,那么每多跑一周,损失就是一周的固定成本。提前设定触发条件是唯一能让成本在可控范围内的方法。

在实际操作中,可以给每个较高成本的资源打一个“止损标签”:

标签名称含义触发动作
keep-on-hot必须长期热备保留最小副本,不做主动缩容
scale-down-after-7d业务 7 天未达标则缩容第 7 天自动缩容到最小规格
release-after-30d30 天未达标则释放进入回收流程,备份后删除
nowait临时资源随时可释放,不参与数据恢复

止损标签的好处是让“是否终止一个项目”不再依赖个人意志,而是变成一项指标驱动的流程。当业务没有按期到来时,不再需要某个领导拍板才缩容,系统会按既定规则自动收敛。这就是把机场亏损问题转换成可执行的工程制度。

9. 别把“低利用率”当成“必须关停”

文章最后想补充一个容易被误解的点。空置资源治理的目标不是追求资源利用率达到 100%,而是避免资源无价值地消耗成本。

任何系统都需要预留容量,机场也一样。高峰期、恶劣天气、设备故障都会导致临时性容量需求。如果把所有备用容量全部砍掉,表面上看成本下降了,但业务稳定性可能大幅下降。

所以在做治理时,要把资源分成两类:一类是“为了应对不确定流量而保留的容量”,一类是“没有任何用途但账单继续滚动的沉淀成本”。前者需要保留,但要明确保留周期和数量;后者才是治理对象。

判断两者的主要依据不是平均利用率,而是需求模型:

这个资源是否在可预见的场景里被使用?如果业务需要,多久能调度到替代资源?保留它所需的固定成本,是否低于临时调度的费用?如果低于,保留是合理的;如果远高于,就应该考虑用“按需启动”替代“常驻预留”。

回到机场的例子。一个日吞吐设计量很高但实际航班很少的机场,核心问题往往不是“为什么它有空余容量”,而是“建设规模和现实需求之间出现了错配,且缺少一个止损机制”。技术系统里的浪费也一样:第一次踩坑可以说需求预估不准;但如果资源长期空置、账单持续走高、又没有人负责收敛,那就不是预估问题,而是流程问题。

把止损动作前移到资源申请阶段,给一份预算上限和一份释放条件,再配合 30 天的利用率观察,大多数闲置资源其实都能在早期被控制住。不要让空转的资源继续在账单上运行,才是在“每天损失 110 万美元”这个标题背后,真正值得技术人记住的一点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询