2. 容量水位定义
容量水位(Capacity Watermark)是衡量系统资源使用程度与剩余能力的量化标尺。在 GameDay 复测中,容量水位口径决定了“系统是否健康”的判断基准。本节从概念、关键指标、阈值设定原则三个层面建立统一口径。
2.1 容量水位的概念
容量水位指系统在单位时间内对某一资源的实际消耗量与该资源理论最大可供给量的比值,通常以百分比表示。水位越高,系统越接近瓶颈;水位超过阈值即触发容量告警或限流熔断。
核心公式:
容量水位(%)=(当前资源使用量 / 资源最大容量)× 100%
容量水位(%)=(当前资源使用量 / 资源最大容量)× 100%
容量水位与负载水位不同:负载水位关注请求量(QPS、TPS),容量水位关注资源消耗(CPU、内存等)。两者在 GameDay 复测中需联合观测,但容量水位是“能否扛住”的最终判据。
2.2 关键指标
GameDay 容量水位复测聚焦五大资源维度。每个维度选取最具代表性的单一指标,避免指标膨胀导致口径混乱。
| 维度 | 核心指标 | 采集方式 | 单位 | 说明 |
|---|---|---|---|---|
| CPU | CPU 使用率(User + System) | /proc/stat / top / node_exporter | % | 排除 idle/iowait/steal 后的有效占用 |
| 内存 | 已用内存占比(不含 cache/buffer) | /proc/meminfo / free / mem_exporter | % | 重点关注 MemAvailable 而非 MemFree |
| 磁盘 | 磁盘使用率 + 磁盘 IO 等待时间 | df / iostat / disk_exporter | % / ms | 空间水位与性能水位需分开评估 |
| 网络 | 网络带宽使用率 | sar -n DEV / netstat / node_exporter | % | 以网卡最大带宽为分母,双向分别计算 |
| 连接数 | 活跃连接数 / 最大连接数 | ss / netstat / 应用层指标 | 个 / % | 区分 TCP 连接、数据库连接、线程池连接 |
口径建议:所有指标统一使用“当前值 / 最大容量”的百分比形式。最大容量取硬件规格或配置上限,不取瞬时峰值。例如:CPU 最大容量 = 核数 × 100%,内存最大容量 = 物理内存总量,磁盘最大容量 = 分区总大小。
2.3 水位阈值设定原则
阈值设定是容量水位口径落地的关键。错误的阈值会导致误告警或漏告警。以下为 GameDay 复测中使用的五条硬性原则:
- 安全余量原则:阈值必须低于理论最大值的 80%,预留至少 20% 的缓冲空间应对突发流量。
- 分层设定原则:区分“警告水位”(Warning)和“危险水位”(Critical),两层阈值之间至少间隔 10 个百分点。
- 稳态优先原则:阈值基于系统在正常负载下的稳态数据设定,而非基于压测极限值。
- 维度独立原则:每个资源维度独立设定阈值,不混合计算综合水位。
- 可复现原则:阈值必须附带明确的采集周期和统计方法(如 1 分钟平均 / 5 分钟峰值)。
2.4 口径复测检查清单
在 GameDay 正式开始前,使用以下清单确认容量水位口径已对齐:
| 检查项 | 验收标准 | 状态 |
|---|---|---|
| 指标定义统一 | 所有团队使用相同的指标公式和采集源 | ☐ |
| 最大容量确认 | 每个资源的最大容量已与实际规格对齐 | ☐ |
| 阈值配置生效 | Warning / Critical 阈值已写入监控系统 | ☐ |
| 采集周期一致 | 所有指标统一使用 60s 采集间隔 | ☐ |
| 水位计算脚本验证 | 水位计算脚本在测试环境输出正确百分比 | ☐ |
常见口径陷阱:
• 将 cache/buffer 计入内存使用 → 导致水位虚高,应使用 MemAvailable。
• 磁盘只看空间不看 IO 等待 → 空间充足但 IO 打满仍会雪崩。
• 网络带宽只算入站不算出站 → 出站带宽打满同样影响服务质量。
• 连接数只统计 ESTABLISHED 状态 → TIME_WAIT 过多也会耗尽端口资源。
• 将 cache/buffer 计入内存使用 → 导致水位虚高,应使用 MemAvailable。
• 磁盘只看空间不看 IO 等待 → 空间充足但 IO 打满仍会雪崩。
• 网络带宽只算入站不算出站 → 出站带宽打满同样影响服务质量。
• 连接数只统计 ESTABLISHED 状态 → TIME_WAIT 过多也会耗尽端口资源。