2. 核心概念:服务画像、资源画像与水位口径

在容量压测与水位基线制定之前,必须统一三个基础概念:服务画像、资源画像和水位口径。它们是后续所有压测场景设计、数据分析和阈值制定的逻辑起点。

2.1 服务画像

服务画像是对一个微服务或应用在业务逻辑、调用关系、流量特征、性能基线四个维度的结构化描述。它回答“这个服务在线上到底在做什么、怎么被调用、消耗多少资源”。

维度 核心指标 典型数据来源
业务逻辑 核心接口、读写比例、数据量级 API 文档、代码走读
调用关系 上游依赖、下游依赖、调用链深度 链路追踪(Jaeger/Zipkin)
流量特征 QPS 峰值/均值、请求包大小、响应包大小 网关日志、Prometheus
性能基线 P99/P95/P50 延迟、错误率、CPU 利用率 APM 系统(Datadog/SkyWalking)
实践要点:服务画像不是静态文档,而是随版本迭代持续更新的“活档案”。每次大版本上线前,必须重新采集流量特征和性能基线。

2.2 资源画像

资源画像描述服务在不同负载下对基础设施资源(CPU、内存、网络、磁盘)的实际消耗模式。它与服务画像的区别在于:服务画像关注“业务特征”,资源画像关注“物理消耗”。

  • CPU 画像:用户态/内核态占比、上下文切换频率、缓存命中率。
  • 内存画像:堆内/堆外分配速率、GC 频率与停顿、RSS 常驻集。
  • 网络画像:连接数、吞吐量、重传率、TCP 队列深度。
  • 磁盘画像:IOPS、读写延迟、IO 等待占比。
常见误区:很多团队只采集 CPU 和内存,忽略网络和磁盘画像。在微服务架构中,网络连接数和 IO 等待往往是真正的瓶颈。
服务画像与资源画像的关系 服务画像 业务逻辑 / 调用关系 流量特征 / 性能基线 资源画像 CPU / 内存 / 网络 / 磁盘 消耗模式与瓶颈识别 输入负载 输出资源消耗数据 水位口径(阈值制定) 基于资源画像设定安全水位线 说明 服务画像描述“做什么”,资源画像描述“消耗多少”。 两者结合才能制定合理的水位口径。

2.3 水位口径

水位口径是容量管理中用于判断服务“健康程度”的量化阈值体系。它定义了:当资源消耗达到什么程度时,服务处于安全、预警、危险或过载状态。

水位口径通常分为四个等级:

  1. 安全水位:资源利用率 < 60%,延迟 P99 < 基线 × 1.2,无错误率上升。
  2. 预警水位:资源利用率 60%–75%,延迟 P99 在基线 × 1.2–1.5 之间,错误率 < 0.1%。
  3. 危险水位:资源利用率 75%–90%,延迟 P99 在基线 × 1.5–2.0 之间,错误率 0.1%–1%。
  4. 过载水位:资源利用率 > 90%,延迟 P99 > 基线 × 2.0,错误率 > 1%。
水位等级 CPU 利用率 内存利用率 P99 延迟倍数 错误率 建议动作
安全 < 60% < 70% < 1.2× < 0.01% 正常运营
预警 60%–75% 70%–80% 1.2×–1.5× < 0.1% 观察、准备扩容
危险 75%–90% 80%–90% 1.5×–2.0× 0.1%–1% 立即扩容或降级
过载 > 90% > 90% > 2.0× > 1% 熔断、限流、紧急扩容
重要原则:水位口径不能一刀切。不同服务对延迟和错误的容忍度不同(例如:支付服务 vs 日志服务),必须基于服务画像和资源画像差异化制定。
水位口径决策流程 服务画像 + 资源画像 设定初始阈值 压测验证与调整 迭代调整 关键原则 • 阈值必须可量化 • 不同服务不同口径 • 压测验证后定稿

2.4 三者关系总结

服务画像、资源画像和水位口径构成容量管理的三角基础:

  • 服务画像是“输入”——描述业务负载特征。
  • 资源画像是“映射”——描述负载到资源消耗的转换关系。
  • 水位口径是“输出”——基于前两者制定的可执行阈值。
一句话记忆:没有服务画像,压测场景是盲目的;没有资源画像,瓶颈定位是模糊的;没有水位口径,容量决策是随意的。