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 慢了一个数量级。

Sources