要对比不同服务器的 Throughput(吞吐量),核心原则是**“在相同或可对比的条件下,测量单位时间内完成的成功请求数”**。以下是详细的步骤和注意点。
不同场景下 Throughput 的含义可能不同:
通常所说的 Throughput 都是 “成功完成的请求数 / 时间间隔”。
| 维度 | 要求 |
|---|---|
| 硬件配置 | CPU、内存、磁盘、网卡尽量一致 |
| 操作系统 | 内核版本、参数(如 ulimit、TCP)一致 |
| 网络环境 | 同一局域网 / 同机房,避免公网波动 |
| 软件版本 | Nginx / DB / 应用版本一致 |
| 负载类型 | 使用相同的请求模式 |
| 测试时长 | 足够长(如 5~10 分钟以上) |
不同场景使用不同工具:
| 场景 | 工具 |
|---|---|
| HTTP | wrk、ab、hey、vegeta |
| TCP/通用 | iperf3 |
| 数据库 | sysbench、pgbench |
| RPC | ghz(gRPC) |
| 自定义 | 自写压测程序 |
示例:HTTP 对比
wrk -t4 -c100 -d30s http://serverA:8080
wrk -t4 -c100 -d30s http://serverB:8080
| 指标 | 含义 |
|---|---|
| Throughput | 成功请求/秒 |
| Latency (P50/P95/P99) | 延迟分布 |
| Error Rate | 失败率 |
| CPU / Mem / IO | 资源消耗 |
| Connection reuse | 是否复用连接 |
⚠️ 高 Throughput + 高延迟 ≠ 性能好
不要只测一个并发数:
| 并发数 | 目的 |
|---|---|
| 低并发 | 看单请求处理能力 |
| 中并发 | 看最优 Throughput |
| 高并发 | 看瓶颈和稳定性 |
画一张:
Throughput vs Concurrency 曲线
10000 QPS,但 30% 失败 ≈ 性能很差
一个服务器跑简单接口,另一个跑复杂逻辑,结果无意义
30 秒测试不足以观测 GC、缓存、连接建立开销
Linux 默认参数在高压下通常不够
逐步增加并发,直到:
例如:
在 P99 < 50ms 的前提下,谁 Throughput 更高
Throughput / CPU core
在相同 4C8G 环境下,使用 wrk 100 并发:
- Server A:12,000 RPS,P99=35ms
- Server B:9,500 RPS,P99=40ms
→ Server A Throughput 高 26%,延迟更低,性能更优
如果你愿意,可以告诉我:
我可以直接帮你设计一份 可执行的对比测试方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。