PostgreSQL 在 23 种 AWS EC2 实例类型的性能与成本分析
PostgreSQL 在 23 种 AWS EC2 实例类型的性能与成本分析
执行摘要
对于需要 33,000 RPS(每秒请求数)且数据集为 1 GB 的工作负载,使用 gp3-baseline 存储的 m8g.large 实例是最具成本效益的配置,每月成本约为 $82。虽然 c8i.large 提供了最高的单位美元吞吐量,但基于 Graviton 的实例 (arm64) 在 PostgreSQL 部署中通常在性能和成本之间提供更优的平衡。
33,000 RPS 的性价比边界
在以 1 GB 数据集实现 33,000 RPS 吞吐量的目标下,52 种测试配置中有 30 种满足了该要求。最优实例的选择取决于优先考虑的是绝对最低成本还是最高效率。
最便宜的配置
- 实例: m8g.large
- 存储: gp3-baseline
- 架构: arm64 (Graviton)
- 成本: ~$82/mo
- 性能: 45,515 RPS (1.4× 目标)
每美元最佳 RPS
- 实例: c8i.large
- 存储: gp3-baseline
- 架构: x86-64
- 性能: 52,203 RPS
- 效率: 451,476 RPS/€·hr
实例系列的对比分析
EC2 系列之间的性能差异显著,较新一代的处理器和 Graviton 处理器在吞吐量和延迟方面表现出明显的优势。
Graviton (arm64) vs. x86-64
Graviton 实例(在源数据中以绿色高亮显示)频繁出现在性价比边界上。例如,在使用 gp3-baseline 存储时,m8g.large (arm64) 在成本($82/mo 对比 $90/mo)和吞吐量(45,515 RPS 对比 41,305 RPS)方面均优于 m7i.large (x86-64)。
实例规格大小带来的性能扩展性
增加实例规格通常会提高吞吐量,但随着实例变大,每美元的 RPS 往往会降低:
- m8g.large: 45,515 RPS (~$82/mo)
- m8g.xlarge: 70,871 RPS (~$147/mo)
- m8g.2xlarge: 81,451 RPS (~$278/mo)
存储配置的影响:gp3-baseline vs. gp3-max
存储配置会显著影响每月成本,但并不总是能按比例提高吞吐量。
以 c8i.large 为例:
- gp3-baseline: 52,203 RPS,每月约 ~$84
- gp3-max: 53,444 RPS,每月约 ~$184
在这种情况下,升级到 gp3-max 使每月成本增加了 100% 以上,而每秒请求数仅略有增加,这表明对于此特定工作负载,baseline gp3 存储已足够。
低端性能(T 系列实例)
T 系列实例 (t3, t4g) 不适合高吞吐量的 PostgreSQL 工作负载。这些实例始终无法达到 33,000 RPS 的目标,大多数的性能在 2,800 到 5,300 RPS 之间。例如,在 gp3-baseline 上,t4g.small 仅实现了 2,842 RPS,其速度比 m8g.large 慢了一个数量级。