Skip to content

5 秒负载对照

查看 Markdown

WebSocket 的 4 KiB 配置吞吐中位数下降 6.51%,P99 增加 13.29%。所有配置的两版本五轮吞吐范围均重叠;差异的具体原因尚未确定。其他配置见图表。

每个版本、每种配置使用五个独立进程,各预热 1 秒、测量 5 秒。基线与候选相邻执行,先后顺序交替。80 条数据完整,失败、错误及超时均为零。下表为中位数 [最小值–最大值];范围是五次观测值,不是置信区间。

各配置归一化吞吐量及五轮范围

吞吐量与 CPU

Redis 单位为千条命令/秒,TCP/HTTP/WebSocket 为千次消息往返/秒;不同配置不相加。CPU 满载一个核心为 100%;Redis 只计客户端进程,TCP/HTTP/WebSocket 计同机客户端与服务端进程。CPU 效率按每轮“吞吐量 /(CPU 占用率 / 100)”计算,再对五轮取中位数。

配置 基线吞吐,千次/秒 候选吞吐,千次/秒 变化 CPU%,基线 → 候选 CPU 效率变化
Redis · Standalone Asio · 4 KiB
每批 16 条命令 · 每连接 1 批在途 · 4 个连接
97.11 [95.52–99.63] 95.20 [94.97–96.62] −1.96% 96.57 → 97.73 −2.96%
Redis · Standalone Asio · 1 KiB
每批 64 条命令 · 每连接 1 批在途 · 4 个连接
365.97 [363.32–385.05] 368.73 [363.17–376.57] +0.75% 102.34 → 103.23 −0.88%
WebSocket · Boost · 64 B
每连接 16 条在途 · 4 个线程 · 16 个连接
236.16 [210.92–237.84] 233.98 [232.33–234.42] −0.92% 366.14 → 368.33 −1.55%
WebSocket · Boost · 4 KiB
每连接 16 条在途 · 4 个线程 · 16 个连接
159.67 [147.66–161.17] 149.27 [139.90–156.68] −6.51% 372.05 → 369.21 −5.79%
Redis · Boost · 4 KiB
每批 16 条命令 · 每连接 1 批在途 · 4 个连接
95.47 [95.05–99.16] 95.46 [95.36–97.58] −0.01% 97.28 → 97.38 −0.08%
Redis · Boost · 1 KiB
每批 64 条命令 · 每连接 1 批在途 · 4 个连接
365.88 [363.26–375.79] 367.87 [363.90–374.77] +0.54% 102.30 → 102.76 +0.18%
TCP · Boost · 64 B
每连接 16 条在途 · 4 个线程 · 16 个连接
315.96 [272.55–317.00] 311.26 [267.16–314.56] −1.49% 359.25 → 361.72 −1.98%
HTTP · Boost · 4 KiB
每连接 16 条在途 · 1 个线程 · 16 个连接
53.21 [53.06–53.80] 53.12 [52.71–53.39] −0.17% 82.15 → 82.26 −0.30%

延迟(µs)

Redis 为整批流水线请求的响应时间;TCP/HTTP/WebSocket 为单条消息往返时间。

配置 基线 P50 候选 P50 基线 P99 候选 P99
Redis · Standalone Asio · 4 KiB 661.00 [638.50–669.96] 671.96 [665.25–672.46] 711.00 [707.17–722.63] 715.92 [712.71–730.25]
Redis · Standalone Asio · 1 KiB 699.67 [663.42–703.92] 695.83 [674.38–704.46] 749.67 [719.71–755.96] 750.08 [743.58–754.58]
WebSocket · Boost · 64 B 1086.79 [1080.71–1226.83] 1097.04 [1095.58–1105.42] 1310.71 [1299.83–1412.96] 1316.29 [1297.46–1330.38]
WebSocket · Boost · 4 KiB 1581.50 [1570.83–1713.96] 1632.58 [1617.46–1811.17] 1990.00 [1900.25–2232.42] 2254.42 [1993.67–3181.96]
Redis · Boost · 4 KiB 670.54 [640.75–673.13] 670.79 [657.71–671.25] 713.38 [706.63–716.67] 711.92 [709.38–713.25]
Redis · Boost · 1 KiB 700.38 [676.92–704.42] 697.83 [681.42–703.00] 750.42 [743.63–755.42] 747.83 [744.00–750.38]
TCP · Boost · 64 B 806.17 [804.25–952.71] 820.88 [815.21–967.88] 1124.96 [1115.63–1180.96] 1131.50 [1094.21–1238.42]
HTTP · Boost · 4 KiB 4779.29 [4738.50–4794.00] 4804.46 [4786.33–4821.88] 5082.04 [5053.21–5111.67] 5124.08 [5079.75–5128.21]

测量环境

Apple M4 Pro(Mac16,11),14 核,48 GiB;macOS 27.0.1(26A434);Apple Clang 21,-O3 -DNDEBUG -std=gnu++20;Boost 1.90、Standalone Asio 1.38.2、OpenSSL 3.6.4。所有配置均使用 IPv4 本机回环、明文传输;Redis 协议服务端为 Valkey 8.0.11。测量区间:2026-10-15 19:36:55–19:45:00 UTC。

基线 25fe2e5fac4e09edee597f312d58b0362b9e0681,候选 2aa5bc0ef7d383d8cfbc04520f3b952fa27c5fbd,使用相同的正式 C++ benchmark 驱动。Redis 使用 4 个连接,每连接 1 个 io_context 和 1 个线程、1 批在途请求;TCP/HTTP/WebSocket 使用 16 个连接、每连接 16 条在途请求、1 个共享 io_context,除 HTTP 为 1 个线程,其余为 4 个线程。本组只比较回调接口,不代表连接池、协程、关闭耗时或生产容量。

复现

统一驱动构建入口 · 配置矩阵:数据库 · 配置矩阵:网络端点

Navigation

Type to search…

↑↓ navigate↵ selectEsc close