跳到主要内容

设计容量规划系统

容量规划流程

资源需求评估

基于 QPS 估算

目标 QPS: 10,000
单实例承载 QPS: 2,000(压测得出)
冗余系数: 1.5(应对突峰)
所需实例数: 10,000 / 2,000 × 1.5 = 8 台

单实例配置: 4C8G
总资源: 32C 64G

基于历史数据预测

# 简单的线性增长预测
import numpy as np

# 最近 6 个月的月峰值 QPS
monthly_peak = [5000, 5500, 6200, 7000, 7500, 8200]
months = np.arange(len(monthly_peak))

# 线性拟合
slope, intercept = np.polyfit(months, monthly_peak, 1)
# 预测第 12 个月
predicted = slope * 12 + intercept
print(f"12个月后预计峰值 QPS: {predicted:.0f}")

压测方案

# wrk 压测(单机)
wrk -t12 -c400 -d30s http://api.example.com/endpoint

# k6 压测(推荐,可定义复杂场景)
k6 run --vus 100 --duration 5m load-test.js

# Locust 分布式压测
locust -f locustfile.py --master --expect-workers 4

告警阈值设计

指标预警阈值严重阈值
CPU 使用率70%85%
内存使用率75%90%
磁盘使用率80%90%
QPS / 容量比70%85%

常见面试问题

Q1: 如何做容量规划?

答案

  1. 基线测量:压测出单实例的极限 QPS、内存消耗
  2. 现状画像:当前 QPS、资源使用率、波峰波谷
  3. 增长预测:根据业务增长率、大促计划预测未来需求
  4. 冗余设计:CPU 日常不超过 60%,为突峰留 Buffer
  5. 弹性方案:K8s HPA 自动伸缩 + 预留弹性资源

相关链接