容量规划常见的两种失败方式,一种是等 CPU、内存或磁盘打满才紧急采购,另一种是凭感觉一次买足五年,结果大量资源闲置。企业服务器容量规划应回答三个问题:当前安全承载多少业务,增长到什么程度会触发瓶颈,从触发到扩容完成需要多久。答案必须来自业务指标、监控趋势和压力测试,而不是单张资源截图。
一、容量规划从业务指标而非硬件指标开始
硬件容量要与业务量建立映射。Web/API 系统可使用峰值 QPS、并发连接、P95/P99 延迟;数据库可使用每秒事务、活跃连接、数据集与日志增量;文件平台可使用日上传量、对象数量、读取吞吐;批处理系统可使用任务数量与截止时间。只看 CPU 百分比无法解释下一次营销活动需要多少机器。
监控窗口至少覆盖普通工作日、月末结算、活动高峰和备份批处理。对指标同时记录平均值、P95、P99 与最大持续值。瞬间尖峰可通过缓存、排队和弹性处理,持续高位则需要优化或扩容。还应标注发布、故障和活动事件,避免把异常日误当长期趋势。
| 资源 | 关键指标 | 建议预警观察 | 扩容前先排查 |
|---|---|---|---|
| CPU | 利用率、load、单核热点、steal | 峰值持续高于安全线且延迟恶化 | 慢代码、锁、线程数、虚拟化争用 |
| 内存 | available、工作集、swap、缓存命中 | 可用低于约15%且si/so持续非零 | 泄漏、缓存上限、进程配置 |
| 磁盘 | 容量、增长率、IOPS、await、%util | 容量预计在交付期内达80% | 日志、慢查询、无效数据、阵列 |
| 网络 | P95带宽、PPS、重传、丢包 | 持续接近链路安全上限 | 静态资源、压缩、异常流量 |
| 应用 | QPS、错误率、P95/P99 | 业务指标先于资源指标恶化 | 下游依赖、连接池、缓存 |
二、用峰值 QPS 与单机承载力反推台数
应用服务器可使用公式:所需台数等于“预测峰值 QPS 除以单机安全承载 QPS,再乘冗余系数”,最后向上取整。单机安全承载力必须是在满足错误率和 P95/P99 延迟目标时测得,不能取压测崩溃前的极限值。冗余系数用于覆盖流量偏差、版本性能变化和节点故障,也可以直接采用 N+1 或 N+2 规则。
示例:预计六个月后峰值为 2400 QPS,单机在 P95 小于 200 毫秒、错误率低于目标时安全承载 700 QPS,按 1.25 冗余系数计算,2400 除以 700 再乘 1.25,结果约 4.29,向上取整需要 5 台。如果要求任意一台故障后仍满足峰值,还要校验 4 台总安全承载力是否至少为 2400 QPS。若只有 2800 QPS,理论满足但余量有限,应结合增长和扩容交付期决定是否增至 6 台。
# 在测试环境测单机HTTP承载,逐级增加并发并观察延迟和错误率 wrk -t8 -c200 -d180s --latency http://192.0.2.20/api/test # 压测期间同步采集资源 mpstat -P ALL 1 vmstat 1 iostat -x 1
数据库不能简单按 CPU 核数线性扩展。应使用真实查询比例、数据规模与索引,测每秒事务和尾延迟。读副本可以扩展部分读取,但写入、事务一致性和复制延迟仍会限制整体。缓存命中率改变也会显著影响后端容量,因此模型要定期重测。
三、分别建立 CPU、内存、存储与网络模型
CPU 可先建立“每单位业务消耗的 CPU 时间”模型,再用峰值与目标利用率估算。例如当前 1000 QPS 使用 8 核的百分之五十,若应用特征不变,2000 QPS 理论消耗约翻倍,但实际可能受锁、缓存和上下文切换影响,必须用压测校准。生产持续 CPU 建议保留故障和突发余量,不能以百分之百为设计目标。
内存模型包括操作系统、应用常驻集、数据库工作集、页缓存、连接与临时计算。检查 free -h 的 available,而非只看 free;Linux 会合理利用内存做缓存。若 vmstat 的 si/so 持续非零,且应用延迟升高,就要排查工作集、泄漏或配置上限。
# 连续观察CPU、内存、交换和磁盘队列 free -h vmstat 1 60 pidstat -rud 1 60 iostat -x 1 # %util持续接近100%并伴随await升高,通常说明设备饱和
存储容量可用公式:未来容量等于当前有效数据加“日净增量乘规划天数”,再加索引、日志、临时空间、备份与安全余量。若当前有效数据 2TB,每日净增 10GB,规划 180 天,仅新增数据约 1.8TB;再考虑索引、日志和百分之二十安全余量,不能只采购 4TB 标称盘。还要扣除 RAID、文件系统和预留空间造成的可用容量差异。
# 分析文件系统、inode和目录增长 df -h df -ih sudo du -xhd1 /data | sort -h # 磁盘性能基线仅在安全测试文件执行 fio --name=randread --filename=/data/fio.test --size=10G --rw=randread --bs=4k --iodepth=32 --numjobs=4 --direct=1 --runtime=300 --time_based --group_reporting
dd 适合粗测顺序复制速度,容易受到页缓存与块大小影响;fio 可控制随机或顺序、块大小、队列深度和并发,更适合容量规划中的 IOPS 模型。网络则应按平均响应大小乘峰值请求数估算业务带宽,再增加协议开销、复制、备份和管理流量。
四、预测增长要给区间与触发线
增长预测不要只用一条直线。至少给出保守、基准和快速增长三种情景。短期可以使用最近多周的环比趋势,长期要结合客户数、营销计划、功能上线、数据保留政策和业务季节性。新功能可能让单请求资源消耗改变,即使 QPS 不变,容量模型也会失效。
触发线应倒推扩容交付周期。假设采购审批两周、设备交付四周、部署迁移两周、验证一周,总交付期九周;若磁盘按当前趋势十周后达到百分之八十,那么现在就应启动,而不是等到告警。可使用公式:启动阈值等于安全上限减去“单位时间增长量乘交付周期”,并额外留出预测误差。
# 节点间或新旧环境进行网络吞吐验证 ping -c 100 192.0.2.30 mtr -rw -c 100 192.0.2.30 iperf3 -c 192.0.2.30 -P 4 -t 60 iperf3 -c 192.0.2.30 -P 4 -t 60 -R
五、优化、扩容与降配的决策顺序
资源接近阈值时先确认监控准确,再定位瓶颈。低效 SQL、无限日志、错误重试或内存泄漏应优先修复,否则扩容只会推迟问题。之后评估纵向扩容、横向扩容和架构优化。纵向扩容改动小但有上限与停机风险;横向扩容提升冗余但要求无状态化和负载均衡;缓存、队列、冷热分层可减少单位业务成本,但增加系统复杂度。
降配同样需要压力测试与回滚。长期低利用率不一定代表可降配,可能是灾备节点或周期峰值。应验证故障情况下剩余容量,并观察至少一个完整业务周期。任何配置变化都要留下前后基线。
六、容量规划实施步骤
- 明确 SLO、峰值业务量、增长计划、RTO、RPO 和故障冗余要求。
- 采集至少四周监控,覆盖活动、结算和批处理,统一平均、P95、P99 口径。
- 在接近生产数据量的环境压测,得到满足延迟与错误率目标的单机安全承载力。
- 按峰值 QPS、单机承载力和冗余系数反推台数,另建内存、存储和网络模型。
- 制作保守、基准、快速增长三种预测,并列出采购、部署、迁移、验证周期。
- 设置启动阈值和负责人,将扩容任务放到容量耗尽前,而不是告警后。
- 每月复核偏差、每季度重算模型,大版本上线前重新压测。
小结与避坑建议
企业服务器如何制定容量规划,核心是建立“业务量到资源”的可校准模型。用峰值 QPS 和单机安全承载力算节点,用工作集算内存,用净增量和交付期算存储,用用户流量与内部复制算网络,再通过冗余系数覆盖故障。常见坑是把平均值当峰值、把极限承载当安全承载、忽略扩容周期、只扩硬件不处理低效代码,以及只做增长规划不做降配复核。容量规划不是年度表格,而是监控、预测、验证和调整组成的持续闭环。
企业QQ咨询




