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 等待往往是真正的瓶颈。
2.3 水位口径
水位口径是容量管理中用于判断服务“健康程度”的量化阈值体系。它定义了:当资源消耗达到什么程度时,服务处于安全、预警、危险或过载状态。
水位口径通常分为四个等级:
- 安全水位:资源利用率 < 60%,延迟 P99 < 基线 × 1.2,无错误率上升。
- 预警水位:资源利用率 60%–75%,延迟 P99 在基线 × 1.2–1.5 之间,错误率 < 0.1%。
- 危险水位:资源利用率 75%–90%,延迟 P99 在基线 × 1.5–2.0 之间,错误率 0.1%–1%。
- 过载水位:资源利用率 > 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 三者关系总结
服务画像、资源画像和水位口径构成容量管理的三角基础:
- 服务画像是“输入”——描述业务负载特征。
- 资源画像是“映射”——描述负载到资源消耗的转换关系。
- 水位口径是“输出”——基于前两者制定的可执行阈值。
一句话记忆:没有服务画像,压测场景是盲目的;没有资源画像,瓶颈定位是模糊的;没有水位口径,容量决策是随意的。