You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis性能测试疑问:10kB消息为何比5kB消息Ops/sec更高?

Docker环境下受限Redis性能异常:10kB消息Ops/sec高于5kB的原因解析

问题背景

我在Docker环境下对带有CPU/内存资源限制的Redis进行性能测试,使用Memtier Benchmark工具执行测试。意外发现,10kB大小的消息相比5kB消息,反而获得了更高的每秒操作数(Ops/sec)。测试结果图表如下:
测试结果图表

可能的原因分析

  • Docker资源调度的批量优化:Docker的CPU调度(尤其是CFS配额限制下)会倾向于给单次处理更大数据量的任务分配更长的时间片。10kB消息单次请求的数据量更大,Redis处理时能更充分利用分配到的CPU时间片,减少了调度切换的开销——相比5kB消息需要更多次的调度唤醒,10kB的请求在相同时间内完成的有效操作占比更高。
  • Redis内部批量处理机制触发:Redis底层的内存分配、网络IO缓冲区处理存在批量优化逻辑。10kB的消息大小刚好触发了更高效的批量处理路径,而5kB可能落在优化阈值以下,无法享受到这部分性能提升。
  • TCP打包效率差异:Memtier发送请求时,10kB消息更接近TCP最大段长度(MSS)的最优打包比例,产生的TCP分段更少,减少了TCP握手、ACK等网络层面的额外开销,间接提升了每秒操作数。而5kB小消息会生成更多零散的TCP包,增加了网络处理的消耗。
  • 内存分配器的行为差异:Redis默认使用jemalloc内存分配器,不同大小的value会匹配不同的内存块规格。10kB的value刚好适配jemalloc的某个大内存块,分配和释放的开销更低;5kB则可能需要拼接小内存块或触发更频繁的碎片整理,拖慢了整体处理速度。

内容的提问来源于stack exchange,提问作者try_harder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:34:54