memtier_benchmark 是什么
memtier_benchmark 是 Redis 生态里常用的负载生成器,支持指定读写比例、键分布、数据大小与集群模式,能构造更接近业务的混合负载,适合容量测试与优化验证。它按线程乘连接的模型组织并发,比内置命令集更贴近真实的访问模式。
基本信息
| 工具 | memtier_benchmark |
|---|---|
| 关键参数 | --ratio 读写比、--key-pattern 键分布、--data-size 值大小 |
| 并发模型 | --threads 线程数乘以 --clients 每线程连接数 |
| 集群支持 | --cluster-mode 可对集群压测 |
| 输出 | 按命令分组的吞吐与百分位延迟 |
典型使用场景
- 容量测试:按目标读写比与数据规模构造负载,寻找指标拐点
- 倾斜访问验证:用高斯分布模拟热点键,观察延迟差异
- 连接模型对比:不同线程与连接组合下的吞吐差异
- 集群验证:多分片下的总体吞吐与分片间均衡度
- 回归对比:固定参数与随机种子,让优化前后结果可复现
- 数据规模敏感度:键数量从小到大观察命中率与内存变化
典型负载
典型负载
memtier_benchmark -s 127.0.0.1 -p 6379 --ratio=1:9 --clients=50 --threads=4 -n 100000 # 读写比 1:9
memtier_benchmark --ratio=0:1 --key-pattern=G:G --key-stddev=10 --key-maximum=100000 # 高斯分布热点键
memtier_benchmark --data-size=1024 --ratio=1:4 -n 50000 # 指定写入值大小
memtier_benchmark --cluster-mode -s 10.0.0.1 -p 6379 # 集群模式压测
memtier_benchmark --ratio=1:9 --key-pattern=S:S --clients=30 -n 50000 # 顺序键分布
redis-cli INFO stats | grep -E 'instantaneous_ops_per_sec' # 服务端侧同步观测
redis-cli INFO memory | grep -E 'used_memory:' # 压测期间内存变化参数要点
| 参数 | 含义 | 使用建议 |
|---|---|---|
| --ratio | 写与读的比例 | 按业务真实读写比设置 |
| --key-pattern | 键分布模式(随机/顺序/高斯) | 热点场景用高斯分布 |
| --data-size | 写入值的大小 | 按真实数据分布设置,必要时加随机因子 |
| --threads 与 --clients | 线程数与每线程连接数 | 两者乘积等于总并发连接 |
| --cluster-mode | 启用集群压测 | 验证分片分布与重定向开销 |
键分布全随机会让结果偏乐观:真实业务通常带热点,用高斯分布或指定前缀构造的负载更接近线上表现。
压测要和监控在同一时间窗口进行,服务端指标与客户端结果对齐之后才能判断瓶颈落在哪一层。