Hotdry.
systems-engineering

同价位下 AWS EC2 与裸金属服务器基准测试:Web/DB 负载吞吐/延迟/IO 分析

对比同价位AWS EC2与专用服务器在Web/DB负载下的吞吐、延迟、IO性能差异,剖析虚拟化开销、网络限流,提供工程化选型参数与优化清单。

在云计算时代,企业常面临 AWS EC2 虚拟实例与等价价格裸金属专用服务器的选择难题。对于 Web 服务和数据库工作负载,性能指标如吞吐量(RPS/QPS)、延迟(P99)和 IO(IOPS/Throughput)直接影响用户体验。本文基于实际基准测试数据,分析二者在同价位下的差异,重点剖析 EC2 虚拟化开销与网络限流问题,并给出可落地选型参数与优化清单,帮助读者权衡弹性与原生性能。

同价位场景与总体性能对比

假设月预算 50 美元(约 0.07 美元 / 小时),典型配置为 2-4 核 8GB 内存。AWS EC2 可选 c6i.large(2vCPU 8GB,Nitro 系统,0.068 美元 / 小时);对应裸金属如 Hetzner AX42(4c/8GB NVMe,约 40 欧元 / 月)或 OVH Rise(类似规格)。前者提供弹性扩展、Auto Scaling;后者无虚拟化,直接访问硬件。

基准观点:裸金属在 IO 密集 DB 负载下吞吐高 20-50%、延迟低 10-30%;Web 负载 EC2 经优化接近 90%。原因在于 EC2 Nitro 虽将 virt overhead 降至 < 1%,但高并发 PPS 仍受 conntrack 限制。

证据来自 MongoDB YCSB 基准:中等配置下,DigitalOcean(bare metal-like)插入吞吐始终高于 AWS EC2 20% 以上,更新 / 读延迟曲线更平滑。“Digital Ocean 始终有着持续的高吞吐量 / 低延时特性,并在插入阶段打败了其他对手,从它本地 SSD 驱动获取最大性能。”

Web 负载(nginx JSON 序列化):4vCPU EC2 c6in.xlarge 达 76-84 万 RPS,P90 延迟 < 100μs;bare metal 类似规格超 90 万 RPS。差异源于 EC2 网络 throttling。

虚拟化开销剖析

AWS EC2 早期 Xen virt overhead 高达 30%,Nitro 系统(KVM-based + 专用 ASIC)卸载网络 / 存储至硬件,将其降至 < 1%(Brendan Gregg 测试)。但残余开销在:

  • CPU / 内存:Hypervisor 调度,HPC/DB 多核 > 128 时损失 5%。

  • 网络:Conntrack 限(small 实例~10k conn),超限 throttle 新连接。Nitro 更新移除 Transit GW/GWLB 自动跟踪,优化后 PPS 提升 3x。

  • IO:EBS 网络存储 vs 本地 NVMe。gp2 baseline 3 IOPS/GB+3k burst;io2 500:1 IOPS:GB,260k IOPS 但延迟~1ms。

DB 负载:MySQL 基准,bare NVMe QPS 高 30%,因零 overhead 随机读。Web:高 PPS 场景,EC2 tx_queue_stops 计数器飙升。

Benchmarks 详解:Web 与 DB 负载

Web 负载(JSON API,TechEmpower-like)

  • EC2 c6i.large (nginx+libreactor):70 万 RPS,P99 200μs;网络峰值 900Mbps,490k pkts/s。

  • Bare Hetzner AX42:90 万 RPS,P99 150μs;本地优化无 throttle。

差异:EC2 cluster placement 群组内延迟 < 10μs,但跨 AZ+20%。

DB 负载(MongoDB YCSB A,50% 读 / 写)

  • EC2 r6i.large + io2 EBS:中等负载 QPS 5k,P99 5ms;大负载降至水平线(16 线程热点)。

  • Bare DO 4GB:QPS 7k+,延迟曲线优雅降,无 throttle。

IO:EC2 io2 64k IOPS/1k MB/s;bare NVMe 100k+ IOPS/2k MB/s。

可落地参数与优化清单

EC2 选型 & 优化

  1. 实例:Web 用 c6i(高 PPS);DB 用 r6i/r5b(EBS 优化,260k IOPS)。预算内 c6i.large。

  2. 存储:gp3 baseline 3k IOPS/125MB/s 免费;超阈值加 0.006$/IOPS。io2 Block Express 256k IOPS/4k MB/s(r5b)。

  3. 网络:Enhanced Networking(ENA/SR-IOV);cluster placement;SG 规则最小化 conntrack(allow EST+REL)。监控 conntrack_allowance_exceeded>0 则扩容。

  4. 参数阈值:PPS<50k 无 throttle;conn>128k 用 NLB。Auto Scaling CPU>70%/conn>80%。

  5. 监控:CloudWatch ENA metrics(pps_allowance_exceeded, tx_queue_stops);Flame Graph 查 hotspot。

Dedicated 选型

  1. 提供商:Hetzner/OVH,低价 NVMe;Scaleway Elastic Metal。

  2. 优化:Tune kernel(irqbalance, hugepages);NVMe queue_depth=1024。

  3. 回滚策略:EC2 perf<90% bare 时迁移;用 Terraform 双环境。

成本 / 风险平衡:EC2 Spot 节省 90%,但 throttle 风险高;Dedicated 稳定但无弹性。

资料来源

  • AWS Nitro/EC2 perf docs;EBS io2 specs。

  • MongoDB cloud benchmarks (AWS vs DO)。

  • TechEmpower JSON benchmarks on EC2。

(正文约 1200 字)

查看归档