0

0

Redis如何测试集群的抗压与容灾极限_利用混沌工程工具随机Kill节点验证业务平滑切换能力

P粉602998670

P粉602998670

发布时间:2026-03-13 08:32:32

|

891人浏览过

|

来源于php中文网

原创

压测前必须确认的3个拓扑细节:节点状态全为connected、master槽位无重叠或空缺、slave flags含slave且指向正确master id。

redis如何测试集群的抗压与容灾极限_利用混沌工程工具随机kill节点验证业务平滑切换能力

Redis集群压测前必须确认的3个拓扑细节

不检查集群拓扑就开压,90% 的「压测失败」其实和性能无关,而是节点角色错配或槽位未均匀分布导致请求被重定向甚至拒绝。CLUSTER NODES 输出里每个节点状态必须是 connected,且 master 节点的 slots 范围不能有重叠或空缺;redis-cli --cluster check 是唯一可信的校验方式,别信控制台里的“健康”图标。

  • redis-cli -c -h {node} -p {port} cluster slots 逐节点核对槽位分配是否连续、无缺口
  • 确保所有 slave 节点的 flags 包含 slave 且指向正确的 master id,不是 noflagsfail
  • 客户端连接必须带 -c(cluster mode),否则 MULTI/EXEC 和哈希标签({key})会直接报错 CROSSSLOT Keys in request don't hash to the same slot

用 redis-benchmark 模拟真实流量的关键参数组合

redis-benchmark 默认是单 key 单线程打一个节点,完全无法反映集群路由开销和跨槽压力。要测出瓶颈,得强制它打满所有 master 节点并触发重定向逻辑。

  • -c 100(连接数)+ -t set,get,mset(混合命令)+ -r 1000000(key 范围足够大,避免本地缓存干扰)
  • 必须用 -P 10(pipeline 批次)提升吞吐,否则网络 RTT 成主要延迟源,掩盖真实服务端压力
  • 禁用 -q(quiet 模式),保留每秒统计,观察 requests per second 是否在某节点 CPU 达到 70% 后断崖下跌——那是槽迁移或主从复制拖慢了响应

chaos-mesh kill node 后业务中断的 2 种典型表现及定位路径

不是所有「连接超时」都等于故障;Redis 集群的 failover 有默认 5 秒检测窗口,这期间客户端行为取决于 SDK 实现。常见问题根本不在 Redis 侧,而在客户端重试策略。

Joker AIx
Joker AIx

一站式AI创意生产平台,覆盖图像、视频、音频、文案全品类创作

下载
  • 现象:kill slave 后写入立刻报错 MOVEDASK ——说明客户端没启用 ASKING 指令支持,或缓存了旧的 slot 映射(如 Jedis 的 ClusterCommand 未刷新)
  • 现象:kill master 后 5 秒内读写全挂,但 6 秒后恢复 ——这是正常 failover 周期,但如果业务要求亚秒级切换,就得调小 cluster-node-timeout(注意:低于 3000ms 可能引发误判脑裂)
  • 验证方法:在 client 侧抓包看是否发出 CLUSTER SLOTS 请求;用 redis-cli -c 手动连新 master 测试能否执行 GET,排除配置同步延迟

为什么用 chaosblade 做网络分区比直接 kill 更贴近生产故障

真实机房故障极少是整机宕机,更多是网卡丢包、DNS 解析失败、TLS 握手超时这类「软性隔离」。直接 kill 节点只会触发 failover,但掩盖了客户端因短暂抖动反复重连、连接池耗尽的真实雪崩路径。

  • chaosblade create network delay --interface eth0 --time 3000 --offset 500 模拟高延迟,观察业务方 timeout 配置是否覆盖了 cluster-node-timeout + 网络毛刺
  • chaosblade create network loss --percent 30 测试客户端连接池是否自动剔除不可用节点(Lettuce 支持,Jedis 不支持)
  • 关键检查点:压测中 redis-cli -c cluster nodes 输出里是否有节点状态卡在 handshakenoaddr ——说明 gossip 协议已断裂,但进程还在,此时集群看似「活着」,实则无法达成共识

真正难测的不是扛住多少 QPS,而是当 1 个 master 和它对应的 2 个 slave 同时网络不可达时,剩余节点能否维持读写、客户端会不会把请求发向已失联节点并堆积连接。这些得靠持续 10 分钟以上的混沌实验才能暴露,不是跑一遍脚本就能确认的。

相关标签:

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

78

2025.09.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

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

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

1006

2023.11.02

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

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

671

2023.11.14

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

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

501

2024.04.02

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

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

413

2024.04.07

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号