设计容量规划系统
容量规划流程
资源需求评估
基于 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: 如何做容量规划?
答案:
- 基线测量:压测出单实例的极限 QPS、内存消耗
- 现状画像:当前 QPS、资源使用率、波峰波谷
- 增长预测:根据业务增长率、大促计划预测未来需求
- 冗余设计:CPU 日常不超过 60%,为突峰留 Buffer
- 弹性方案:K8s HPA 自动伸缩 + 预留弹性资源