3. 资源画像基础

3.1 资源画像的概念

资源画像(Resource Profiling)是对 IT 基础设施中各类资源(CPU、内存、IO、网络)在特定工作负载下的使用特征、容量边界、性能衰减规律进行系统性量化的过程。它不同于简单的监控告警,而是通过稳态基线 + 峰值特征 + 趋势模型三维度,构建出每个资源维度的“数字孪生”行为模型。

核心目标:回答三个关键问题——
① 当前资源“够不够用”?
② 未来增长“何时会满”?
③ 压测水位“定多少才合理”?

资源画像与服务画像互为镜像:服务画像描述业务逻辑对资源的“需求模式”,而资源画像描述基础设施对需求的“供给能力”。两者结合,才能确定容量压测的安全水位与告警阈值。

3.2 资源画像的构成要素

资源画像由四个核心维度构成,每个维度都有独立的度量指标、特征曲线和容量约束。下表总结了各维度的关键属性:

维度 核心指标 特征曲线类型 容量约束点 压测关注重点
CPU 使用率、Load Average、上下文切换 线性→饱和(S型) 使用率 > 80% 时响应时间拐点 CPU 排队长度、steal 值
内存 已用内存、Swap 使用率、缺页中断 阶梯式增长 Swap 开始活跃 > 0 GC 频率、OOM 风险
IO IOPS、吞吐量、IO 等待时间 非线性陡增 IO 等待 > 20ms 或队列深度 > 阈值 磁盘饱和度、IO 抖动
网络 带宽利用率、丢包率、TCP 重传率 指数退化 带宽 > 70% 时丢包率上升 连接数、延迟分布

3.3 四维资源画像详解

3.3.1 CPU 资源画像

CPU 是服务吞吐量的第一瓶颈。资源画像需要区分 user/system/iowait/steal 四类时间片占比。当 CPU 使用率超过 80% 时,系统进入排队饱和区,响应时间呈指数级上升。

  • 关键指标:%user、%system、%iowait、%steal、load average / 逻辑核数
  • 画像输出:CPU 使用率-吞吐量曲线、CPU 排队长度-响应时间曲线
  • 压测水位建议:CPU 使用率 ≤ 75% 为安全区,75%~85% 为警戒区,>85% 为危险区
经验法则:当 %steal > 10% 时,说明宿主机超分严重,资源画像失真,需要先解决虚拟化争抢问题。

3.3.2 内存资源画像

内存资源画像关注分配速率、回收频率、Swap 行为。Java 应用尤其需要关注 GC 暂停时间与堆外内存的使用模式。

  • 关键指标:已用内存(GB)、Swap 使用率、缺页中断/s、OOM Killer 触发次数
  • 画像输出:内存分配速率曲线、GC 频率-堆大小关系图
  • 压测水位建议:内存使用率 ≤ 70%,Swap 使用率 = 0%,GC 暂停时间 < 200ms

3.3.3 IO 资源画像

IO 资源画像是最容易被忽视的维度。磁盘的随机读写 vs 顺序读写性能差异可达 10 倍以上,必须区分 workload 类型。

  • 关键指标:IOPS(读/写)、吞吐量(MB/s)、IO 等待时间(await)、队列深度(avgqu-sz)
  • 画像输出:IOPS-延迟曲线、队列深度-吞吐量曲线
  • 压测水位建议:await ≤ 20ms(SSD),avgqu-sz ≤ 2×磁盘数,IO 使用率 ≤ 70%

3.3.4 网络资源画像

网络资源画像需要区分带宽敏感型和连接数敏感型两类场景。微服务架构下,TCP 连接数和重传率是比带宽更敏感的指标。

  • 关键指标:带宽利用率(%)、TCP 连接数(ESTABLISHED)、重传率(%)、丢包率(%)
  • 画像输出:带宽利用率-延迟曲线、连接数-吞吐量曲线
  • 压测水位建议:带宽利用率 ≤ 70%,重传率 < 0.5%,连接数 ≤ 最大连接数的 80%

3.4 资源画像四维关系图

下图展示了四个资源维度之间的相互影响关系以及容量瓶颈传导路径:

资源画像四维关系与瓶颈传导图 CPU 使用率 / Load 内存 分配 / GC / Swap IO IOPS / 延迟 网络 带宽 / 连接数 容量瓶颈 CPU 高 → GC 频繁 CPU 等待 → IO 排队 内存不足 → Swap IO 网络重传 → CPU 开销 瓶颈传导路径 ① CPU 饱和 → 请求排队 ② 内存不足 → 触发 Swap ③ IO 延迟 → 线程阻塞 ④ 网络丢包 → 重传风暴 压测水位原则 • 单维度不超 70%~80% • 多维度叠加时取最小值 • 留 20% 余量应对突发

3.5 资源画像的构建流程

构建资源画像需要遵循采集→清洗→建模→验证四步流程:

  1. 数据采集:以 1 分钟为粒度,持续采集 7×24 小时的全量指标,覆盖业务高峰和低谷
  2. 数据清洗:剔除部署变更、故障、压测等异常时间段的数据,保留稳态样本
  3. 特征建模:对每个维度拟合 P50/P90/P99 分位曲线,识别拐点和饱和区
  4. 阈值验证:通过小规模压测验证模型预测的拐点位置,修正画像参数
常见误区:只采集平均使用率,忽略 P99 峰值。例如 CPU 平均 50% 但 P99 瞬间冲到 95%,此时资源画像应标记为“接近饱和”,而非“充裕”。

3.6 资源画像与压测水位的映射

资源画像的最终输出是一组分维度的安全水位阈值,直接指导容量压测的停止条件和告警触发线:

资源维度 安全水位(绿区) 警戒水位(黄区) 危险水位(红区) 压测停止条件
CPU ≤ 60% 60% ~ 80% > 80% 连续 30s > 85%
内存 ≤ 60% 60% ~ 75% > 75% 或 Swap > 0 Swap 使用率 > 0%
IO await ≤ 10ms 10ms < await ≤ 20ms await > 20ms 或 avgqu-sz > 4 await > 30ms 持续 10s
网络 带宽 ≤ 50% 50% ~ 70% > 70% 或重传率 > 1% 重传率 > 2%
实践建议:资源画像不是一次性工作。每次大版本上线、基础设施变更、业务流量模型变化后,都需要重新校准资源画像,确保水位阈值始终反映当前系统的真实容量边界。