返回

文章详情

PostgreSQL 基准测试:AWS RDS vs. 自托管在 Hetzner (2026)

Hacker News2026年7月7日 11:07

简短的答案是:在相同规模下(2 vCPU / 4 GB,PostgreSQL 16),Hostim 的写入速度是最快的,大约是 AWS RDS db.t4g.medium 的 2.5 倍写入吞吐量,以及默认自托管的 Hetzner Postgres 的 2.1 倍。在原始单核 CPU 速度下,Hetzner 的读取速度是最快的。而 RDS 在这两个方面的速度是最慢的或接近最慢的,且其列出的价格只是实际账单中的一小部分。本文展示了每一个数字、再现它们的精确命令,并且(因为这改变了结论)每个平台的高可用性实际上的成本是多少。基准测试于 2026 年 7 月在 PostgreSQL 16 上运行,位于中欧地区。价格经常变化,因此在您做出承诺之前,请检查每个供应商的实时定价页面。结果的形状变化远不如精确的数字变化重要。我们比较了三种在中欧地区以 2 vCPU / 4 GB RAM 运行 PostgreSQL 16 的小型生产 Postgres 方法: 提供实例 列出价格 / 月 复制(故障转移)? Hostim 托管 Postgres drp-50(2 vCPU / 4 GB) €50 是,默认情况下 AWS RDS db.t4g.medium(2 vCPU / 4 GB) ~$48(仅实例) 否(单可用区) 自托管 Hetzner CPX22(2 vCPU AMD / 4 GB,共享) €19.49 否(单节点) “复制”列对价格和性能影响很大。它在下面有自己的部分。 方法论 目标是对等测试,而不是一种讨好的测试。规则: 每个目标相同的 DB 大小:2 vCPU / 4 GB。相同的 PostgreSQL 主要版本:16。每个目标有一个独立的负载生成器,与数据库之间有一个网络跳跃,位于同一地区,绝不在数据库本身上。每个客户端都有 4 vCPU,因此客户端从不成为瓶颈(通过 mpstat 检查)。相同的工作负载:pgbench,比例因子 50(约 750 MB,适合内存,因此测试测量 CPU 和提交路径,而不是冷磁盘读取),300 秒运行。 客户端设置:sudo apt-get install -y postgresql-contrib nmap sysstat # pgbench + nping pgbench --version 工作负载,以相同的方式针对每个数据库运行: # 初始化(约 750 MB) pgbench -i -s 50 # 写密集型,类似 TPC-B,4 客户端,5 分钟 pgbench -c 4 -j 4 -T 300 # 只读,8 客户端,5 分钟 pgbench -c 8 -j 4 -T 300 -S # 单连接,写入,1 分钟(隔离提交/fsync 延迟) pgbench -c 1 -T 60 网络延迟通过 TCP Ping 测量,连接端口 5432(nping --tcp -p 5432)和 SELECT 1 往返,因为 ICMP 不是在每个平台上开放。 配置对称,简单明了:自托管的 Hetzner 节点运行默认的股票 Postgres(shared_buffers 128 MB,没有调优)。这是真实的“安装 Postgres 就可以使用”的基准。 RDS 运行在其默认参数组上,AWS 会根据实例大小对其进行调优。Hostim 运行自己的托管调优。换句话说,这两种托管选项是开箱即用的调优,而自托管的默认设置则不是,而这个差异是您比较的一部分。 结果 所有运行完成时没有失败交易。 写吞吐量(4 客户端,TPC-B) 目标 TPS 平均延迟 Hostim drp-50 2708 1.48 ms Hetzner(默认) 1303 3.07 ms AWS RDS t4g.medium 1080 3.71 ms Hostim 的写入吞吐量大约是 RDS 的 2.5 倍,也是默认的 Hetzner 节点的 2.1 倍。 单连接写延迟(1 客户端) 这隔离了提交路径。每个事务都会等待 WAL 刷新(synchronous_commit = on 是默认值),所以这主要是存储 fsync 的延迟。 目标 TPS 平均延迟 Hostim drp-50 871 1.15 ms AWS RDS t4g.medium 416 2.41 ms Hetzner(默认) 276 3.63 ms 自托管的和 RDS 的网络附加块存储在提交路径上都需要付费。这是写吞吐量差距的最大驱动因素。 读取吞吐量(8 客户端,仅 SELECT) 目标 TPS 平均延迟 Hetzner(默认) 20068 0.40 ms Hostim drp-50 14333 0.56 ms AWS RDS t4g.medium 13261 0.60 ms 读取随 CPU 扩展,而 Hetzner 的机器凭借没有编排层的原始单核 AMD 速度在这一方面表现出色。Hostim 和 RDS 的差距较小,RDS 排在最后。请注意 db.t4g.medium 是一个可突发实例:在持续的 300 秒运行中,它可能会降到其 CPU 信贷基线,这就是 ~$48 级别的设计所提供的。需要持续 CPU 的工作负载会迁移到 m 类 RDS 实例,费用大约是两倍。 网络延迟 目标 TCP 往返延迟(平均) SELECT 1 Hostim drp-50 0.48 ms ~0.29 ms Hetzner(默认) 0.71 ms ~0.39 ms AWS RDS t4g.medium 1.50 ms ~0.58 ms 您实际支付的价格 这就是列出数字停止有用的地方。 AWS RDS:$48 不是账单 ~$48 是仅实例、单可用区、按需的。除此之外,您还需要单独计费: 存储:gp3 按 GB-月计费。超过 gp3 基线的 IOPS 和吞吐量:如果您预留更多,则计费。 备份:超出您卷大小的备份存储保留会计费。 数据传输:出站和跨可用区流量按 GB 计费。一个存储下拉菜单使这变得具体。在创建数据库向导中选择预留 IOPS SSD,RDS 默认配置为 3000 预留 IOPS,每月按 IOPS 收费约 300 美元。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡