Redis坑

主结点

在非集群环境的情况下,使用redis主从模式来保证业务的高可用性,因此在此种模式下,读写都在主机,要保证主机高性能必须在主机上尽量少的IO操作同时又要兼顾网络导致的主从断链而带来的频繁的fullsync,因此针对主机优化要点如下:

关闭主结点aof

关闭主aof比较简单,可以通过如下命令进行关闭,在主结点上执行
config set appendonly no

关闭主结点save

关闭主上的save原因是避免save的规则导致的bgsave而引起业务波动,bgsave是非常消耗性能的,redis的默认save规则为" 900 1 "," 300 10 ","," 60 10000 ",在此规则下写入量大的情况下会导致主机频繁的bgsave而导致性能急剧下降,可以通过命令config set save关闭主机上因写入而触发的bgsave,数据的完整性交给备机完成,即使这样也无法完全杜绝bgsave,在从机第一连上来或者从机断开过久的情况下还是会触发bgsave

主从同步后key数量不一致问题

因为redis只会在主上进行定期key淘汰并命令传播到从机,因此在key数量很多而且很多key又带有过期时间的情况下,因为淘汰机制问题会导致主从同步后从机的key数量和主机的key数量不一致(过期的key不会同步到从机)
最根本原因是主机在在serverCron函数中进行淘汰的时候一次默认只会淘汰20个key
默认值在redis.h中#define ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP 20 /* Loopkups per loop. */
解决该问题的方式一是修改该数量重新编译,二是修改redis.conf中的hz属性,加快serverCron执行频率

发送缓冲区满导致主从断开频繁fullsync问题

redis为每一个链接的客户端维护了一个发送缓冲区,并限定了大小(有软硬之分),当发送缓冲区满后(超过了设定的值)redis即会断开该链接从而实现自我保护功能
但是问题也出现了,当写入量非常大的时候而该值又设置的不合理会导致主从频繁断连
而且因为写入量巨大新连接上来的从机不能进行部分同步而触发全量同步
为了避免该问题可以根据redis实际的写入数据以及网络情况综合来修改参数client-output-buffer-limit,具体修改多大要结合实际写量和网络情况而定,设置方式为:

config set client-output-buffer-limit "slave 4295000768 4295000768 0"

slave 表示从机链接,普通客户端为normal,发布订阅客户端为:pubsub

复制积压缓冲区repl-backlog-size

复制积压缓冲区缓存了最近的写命令,在有从机链接的时候创建,该缓冲区大小默认为1M,改值决定了从机断开在重新链接上来后是全量同步还是部分同步,如果复制偏移量在复制积压缓冲区内为部分同步,小于或者大于复制积压缓冲区那么就行全量同步,可以根据实际情况通过config set 命令重新设定repl-backlog-size

节点死活判定

在高可用系统中,节点的死活检查非常重要,检测逻辑要快速发现问题并迅速切换,检测手段也是多重多样, redis检测节点死活采用了进程探测加服务ping的方式进行,进程探测是为了确认目标进程存在,但是目标进程存在也不一定确认服务可用,所以另加了去ping指定服务节点的方式。

在实际使用过程中发现某些节点会奇怪的进行切换,而去看机器的内存、网络、以及IO都很低,除了某些CPU核在切换的时刻被跑满,然后分析切换节点的slowlog发现,用户在那个时间点提交了耗时高达几分钟的查询,因为redis是单线程处理,因为某一个耗时高的命令而导致了ping超时导致了切换,优化逻辑就是适当增加ping的耗时和增加ping的次数,这个过程中也要有所取舍,即要很快的发现问题,又不能因为高耗时命令而误判进行切换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容