发布网友 发布时间:2022-04-22 03:05
共4个回答
懂视网 时间:2022-04-11 18:10
Redis集群进行故障检测的方法:自动故障转移测试
修改Python脚本,每隔1s写入一条数据,目的是便于观察在主节点宕机,集群自动故障转移这个时间段之之内(1s钟左右),对于应用程序的影响,或者说应用程序在自动故障转移前后的表现。
如下脚本循环往Redis集群中写入数据,执行期间,强制杀掉一个主节点,观察应用程序连接情况。
同时,如果发生异常,暂停应用程序2s,因为上面一开始配置的集群故障转移时间是1s,如果应用程序暂停2s,完全可以跳过故障转移的过程,当故障转移完成之后,应用程序又恢复成正常状态,虽然8001节点宕机,应用程序继续连接8001节点,但是应用程序完全无感知。
相关学习推荐:redis视频教程
import timefrom time import ctime,sleepfrom rediscluster import StrictRedisCluster startup_nodes = [ {"host":"111.231.253.***", "port":8001}, {"host":"111.231.253.***", "port":8002}, {"host":"111.231.253.***", "port":8003}, {"host":"111.231.253.***", "port":8004}, {"host":"111.231.253.***", "port":8005}, {"host":"111.231.253.***", "port":8006} ] redis_conn= StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True,password="root")for i in range(0, 100000): try: redis_conn.set('name' + str(i), str(i)) print('setting name' + str(i) +"--->" + time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) time.sleep(1) except: print("connect to redis cluster error") time.sleep(2)
发现在杀掉主节点之后,仅发生了一次连接错误,随后因为Redis集群的自动故障转移成功,对应于程序来说是透明的,因此应用程序随后正常工作,不受其中一个主节点宕机的影响。
集群此时的状态,8001节点宕机,明显,8001对应的从节点8004接管主节点,升级为master,对外提供服务
观察升级为主节点的8004实例日志,会发现在强制杀掉原8001主节点之后,1秒钟之内,成功替代8001升级为master节点
如果在故障转移的过程中,没有应用程序访问Redis,应用程序甚至完全不知道Redis集群发生了故障转移,只要不发生集群中某一个节点的主从节点同时宕机,整个集群就没有问题,且对应用程序完全透明。
随后重启宕机的8001节点,会发现8001节点自动变为其原从节点(8004)的从节点
热心网友 时间:2022-04-11 15:18
redis性能测试步骤及命令:http://www.apiref.com/redis-zh/176.html
热心网友 时间:2022-04-11 16:36
Redis 性能测试是通过同时执行多个命令实现的。
Redis 性能测试的基本命令如下:
$ redis-benchmark [option] [option value]
例子:
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
以上例子中主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数。
热心网友 时间:2022-04-11 18:11
redis单点还是集群?可以通过工具或者命令在redis写数据,结合实际业务场景,调整写入数据内容的大小