2. 容量水位基础概念:容量、水位、饱和度、阈值的定义与相互关系

在混沌工程与容量规划实践中,容量、水位、饱和度与阈值是描述系统负载状态与健康度的四个核心度量。理解它们的定义及相互关系,是制定容量水位口径策略的理论基础。

2.1 核心定义

术语 符号 定义 典型单位
容量 C 系统在满足 SLO(服务等级目标)前提下,所能承载的最大负载或资源量。 QPS、并发数、CPU 核数、内存 GB
水位 L 系统当前时刻实际消耗的资源量或承载的负载量。 QPS、并发数、CPU 使用率 %
饱和度 S 水位与容量的比值,反映系统被占用的程度。 百分比(%)
阈值 T 预先设定的水位或饱和度的安全边界,超过该值触发告警或限流。 QPS、百分比(%)
关键区分:容量是静态上限(设计值),水位是动态瞬时值,饱和度是相对比例,阈值是人为设定的控制边界。混沌实验的目标之一,就是验证阈值设置是否能在水位逼近容量前有效触发保护机制。

2.2 相互关系与数学表达

四个概念通过以下公式与逻辑关系串联:

饱和度 (S) = 水位 (L) / 容量 (C) × 100%

安全区间:0 ≤ 水位 (L) ≤ 阈值 (T) ≤ 容量 (C)
  • 线性关系:在容量不变时,水位上升直接导致饱和度线性增加。
  • 非线性拐点:当饱和度超过 70%~80% 时,系统响应时间通常出现非线性增长(排队效应),此时阈值应设置在拐点之前。
  • 阈值与容量的间距:间距(C - T)即为安全缓冲,用于吸收突发流量尖峰,避免系统直接撞到容量天花板。
混沌工程启示:通过注入突发流量或资源故障,观察水位是否在阈值处被限流/降级,以及饱和度是否突破 100% 导致容量击穿。这是验证容量水位口径是否合理的核心实验场景。

2.3 四者关系示意图

下图展示了容量、水位、饱和度与阈值在系统运行中的动态关系:

容量 · 水位 · 饱和度 · 阈值 关系图 容量 (C) — 系统最大承载能力 水位 (L) 当前负载 阈值 (T) 饱和度 (S) S = L / C × 100% 安全缓冲 C - T 当水位 (L) 接近阈值 (T) 时触发告警;当水位超过容量 (C) 时系统过载

2.4 典型场景与阈值设定原则

资源类型 容量定义 常用阈值(饱和度) 说明
CPU 所有核心 100% 使用 70% ~ 80% 超过 80% 通常出现排队与抖动
内存 物理内存总量 80% ~ 85% 预留空间给 GC 与突发分配
磁盘 IOPS 设备最大 IOPS 60% ~ 75% IO 队列深度增长快,需保守
网络带宽 网卡/链路带宽 70% ~ 80% 突发流量容易打满剩余带宽
应用 QPS 压测得到的最大吞吐 60% ~ 70% 预留弹性伸缩与故障转移余量
常见误区:将阈值直接设置为容量值(如 CPU 100% 才告警)。此时水位已无缓冲空间,任何微小波动都会导致饱和度超过 100%,系统进入不可控过载状态。阈值必须留出安全缓冲。

2.5 混沌实验中的四者联动

在混沌工程实验中,四个概念构成闭环验证链路:

  1. 基线采集:记录稳态下的水位与饱和度。
  2. 故障注入:逐步提升水位(如增加流量、消耗资源)。
  3. 阈值触发验证:观察水位到达阈值时,限流/降级/告警是否按预期生效。
  4. 容量边界探测:继续提升水位直至饱和度 100%,确认系统行为(崩溃、雪崩、优雅拒绝)。
  5. 口径优化:根据实验结果调整阈值与容量评估模型。

下图展示了混沌实验中容量水位四者的动态演进过程:

混沌实验中容量水位动态演进 阶段 1 基线稳态 水位: 30% 饱和度: 30% 低于阈值 阶段 2 故障注入 水位: 65% 饱和度: 65% 接近阈值 阶段 3 阈值触发 水位: 80% 饱和度: 80% 告警/限流 阶段 4 容量边界 水位: 100% 饱和度: 100% 系统过载 t₀ t₁ t₂ t₃ 混沌实验逐步推高水位,验证阈值触发机制与容量边界行为

2.6 容量水位口径策略的输入

基于上述四个概念,容量水位口径策略需要明确以下三个关键输入:

  • 容量基准值:通过压测或历史峰值确定。
  • 水位采集方式:实时监控指标(Prometheus、Datadog 等)的聚合周期与百分位。
  • 阈值设定公式:例如 阈值 = 容量 × 安全系数,安全系数通常取 0.6~0.8。
实践建议:在混沌实验中,将饱和度作为实验的自变量,将响应时间、错误率作为因变量。通过拟合饱和度-性能曲线,找到系统真实的非线性拐点,以此校准阈值与容量评估模型。