一个老RoR项目Redis主从同步问题的解决
来源:互联网 发布:重庆国际信托知乎 编辑:程序博客网 时间:2024/04/29 04:24
帮朋友看一个2011年开发的老RoR项目,Redis用的是2.2.111版本。由于设计上的一些不合理,Redis里保存了过多的冗余数据,4年积累下来有近4个G,而且其中一些数据居然还是DB里没有的。
在不久前的一次服务器重启后,Redis就连接不上了,前端数据也就显示不出来。Redis的架构是Master读写+关闭appendonly、Slave备份+开启appendonly,由于Redis版本太老,遂把Master升级到2.6.17(考虑到redis-rb版本还是2.2.2,没有直接部署最新版本,不过试过3.0.5也是可以支持的),重启,从备份的dump.rdb恢复数据,系统可以正常访问了,但是却出现了一个奇怪的问题:Master的CPU使用率会周期性地达到100%,通过日志看到此时是在BGSAVE,这倒不是太大的问题,关键是只有在CPU达到100%的时候,Master的数据才能被访问到,而非100%的时候被卡顿着。
一开始怀疑是开启着的SAVE造成了系统负载过重,于是把SAVE关闭,问题依旧。之后分别把client-output-buffer-limit slave 设置为512mb 128mb 300、hz 设置为50也是没有解决问题。于是观察了一下Redis在卡顿时(也就是CPU使用率在非100%的时候)的状态,是send_bulk,由此看来也许是主从同步出了问题,遂把Slave摘掉,Master果然正常了,这说明Master在BGSAVE之后向Slave发送数据集的时候不顺畅,导致Master响应异常迟缓。
那么此时的主从同步为什么会出现这种情况呢,想到Redis2.2~2.4与2.6及以上版本的dump.rdb格式都是不完全兼容的(可以向下兼容但不向上兼容),会不会是不同版本的Redis主从同步就会不顺畅呢,于是把Slave也升级到相同的2.6.17版本,一切OK。
- 一个老RoR项目Redis主从同步问题的解决
- Redis的主从同步
- redis主从切换需要解决的问题
- Redis的主从同步操作
- Redis主从复制问题和扩容问题的解决思路
- Redis主从复制问题和扩容问题的解决思路
- Redis主从同步异常问题记录
- [ROR] 解决N+1问题的心得
- dns 主从同步问题最终解决了
- Redis的源码安装和主从同步
- redis 分布式,主从同步
- redis 分布式,主从同步
- Redis主从同步分析
- Redis主从同步分析
- Redis同步(主从复制)
- Redis同步(主从复制)
- REDIS主从同步
- Redis之主从同步
- 工作中遇到的java 内存溢出,问题排查
- BLOG收集
- linux下mysql中文乱解决办法
- DisplayMetrics 类解析和用法
- VS2013 利用msvsmon远程调试发布到服务器IIS上程序环境配置详解
- 一个老RoR项目Redis主从同步问题的解决
- Java GC系列(3):垃圾回收器种类
- MyEclipse提示your trial period has expired时,如何手动获取MyEclipse注册码!
- Xcode集成POD的过程及问题解决
- 黑马程序员_流程控制语句
- Android 隐藏软键盘的同时出现光标
- iOS应用性能优化的25个建议
- Java GC系列(4):垃圾回收监视和分析
- 磁条卡磁道笔记(2)