Redis在Kubernetes环境下如何进行性能基准测试?

胖枫同学_4558

胖枫同学_4558

2026-08-30

848人浏览

原创

结论:必须在kubernetes内部pod中运行redis-benchmark --cluster,使用redis 6.0+客户端镜像(如7.0.11)、直连分片pod ip、合理配置-c与-p参数,才能真实反映集群性能;外部压测因service转发、dns抖动、单线程限制等导致结果严重失真。

redis在kubernetes环境下如何进行性能基准测试?

直接结论:用 redis-benchmark --cluster 在 Kubernetes 内部 Pod 中执行,而不是从集群外发起压测;否则网络跳转、DNS 解析、Service 转发都会严重稀释真实 Redis 性能。

为什么不能从本地或 JumpServer 运行 redis-benchmark

很多团队习惯在运维机上跑 redis-benchmark -h redis-cluster-svc -p 6379,结果 QPS 只有预期的 1/3~1/2。根本原因不是 Redis 慢,而是:

  • Kubernetes Service(ClusterIP)引入额外 iptables 或 eBPF 规则转发,延迟增加 0.2~0.8ms/请求
  • 跨节点通信时,Pod IP → Node IP → Service IP 的路径导致 TCP 连接复用率下降
  • redis-benchmark 默认单线程、单连接池,无法打满多核 CPU,而外部压测机往往资源受限(比如 2C4G VM)
  • 集群 DNS 解析(如 redis-cluster-svc.redis-ns.svc.cluster.local)在高并发下出现解析抖动,-c 100 以上就可能卡住

redis-benchmark --cluster 必须用 6.0+ 客户端镜像

Redis 5.x 官方客户端不支持 --cluster 参数,强行使用会报错:Unknown option '--cluster'。Kubernetes 环境下必须确认客户端 Pod 使用的是 Redis 6.0 或更高版本镜像:

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载
  • 博云平台实测需用 redis:7.0.11 镜像(见 deployment-redis-client.yaml)
  • 若用 redis:5.0.14,即使加 --cluster 也会静默忽略,退化为单节点模式,测试结果完全失真
  • 镜像中 redis-benchmark 版本可通过 redis-benchmark --version 验证,输出应为 redis-benchmark 7.0.11 或类似

压测命令必须指定集群入口 IP,而非 Service 名

在 Pod 内部执行时,--cluster 模式要求直接连到某个分片的 Pod IP(不是 Headless Service 域名),否则会因重定向失败而卡死:

  • 正确写法:redis-benchmark --cluster -h 10.244.1.15 -p 6379 -a yourpass -t get,set -n 1000000 -q
  • 错误写法:redis-benchmark --cluster -h redis-cluster-svc -p 6379 ...(会反复尝试解析、超时、重试)
  • 获取 Pod IP 方法:kubectl get pods -n redis -o wide | grep redis,选任意一个主节点 Pod IP 即可
  • 注意:-h 后填的是 Pod IP,不是 Service ClusterIP;redis-benchmark --cluster 会自动发现其余节点,无需手动列全部 IP

并发数 -c 和 pipeline -P 要匹配实际负载特征

盲目调高 -c 不一定提升 QPS,反而可能触发连接风暴、TIME_WAIT 拥塞或 Redis 自身连接数限制:

  • 默认 -c 50 对多数场景已足够;超过 200 时建议同步调大 Redis 的 maxclients(默认 10000)
  • 真实业务多用 pipeline,所以压测必须加 -P 16 或 -P 32(每连接批量发 N 条命令),否则 QPS = connections × 1,完全偏离生产行为
  • 如果测出延迟毛刺明显(如 P99 > 10ms),先检查是否 -c 过高导致内核 socket buffer 打满,可临时改用 -c 100 -P 8 对比
  • 务必加 -q(quiet mode),避免日志刷屏掩盖真实吞吐;结果只看最后一行 xxx requests per second

真正影响压测结果的,从来不是参数拼写,而是压测位置、客户端版本、网络路径这三点。只要 Pod 内跑对版本、连对 IP、配对 -P,一次 redis-benchmark --cluster 就能暴露 Redis 集群的真实吞吐瓶颈——是 CPU?内存带宽?还是持久化阻塞?其他都是后续调优的事。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4429

19

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.14

3975

11

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

7312

6

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

643

6

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

756

6

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

7102

6

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1160

6

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

1076

6

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

6238

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习