Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1758723
  • 博文数量: 150
  • 博客积分: 660
  • 博客等级: 上士
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 11:39
文章分类

全部博文(150)

文章存档

2019年(4)

2018年(36)

2017年(53)

2016年(7)

2015年(3)

2014年(3)

2013年(27)

2012年(2)

2011年(1)

2006年(1)

2005年(13)

分类: 系统运维

2017-05-17 17:27:27

redis一例连接池连接不上的故障及解决

故障现象描述

  • 应用连接redis出现错误
[ERROR]
java.lang.NullPointerException
        at redis.clients.util.Pool.getActivePool(Pool.java:101)
  • redis本身无错误

故障定位

初步定位应该是出在网络层面

  • 检查网络

    通过zabbix监控看到故障发生时redis主机网卡速度达到几百兆,其他期间只有几十兆。

  • 检查网络突发速度的原因

    故障期间redis备份脚本开始运行

故障分析

备份脚本分析

脚本中通过 redis-cli save 完成备份, save命令需要同步,
所以运行期间其他提交更新的数据操作会被阻塞,直到save命令完成,所以本次故障的原因已经h

故障解决方法

用bgsave命令替换save

采取更多措施避免故障发生

  • 备份脚本从redis的master迁移到slave

    redis master只处理客户端的请求,不再负责备份。

  • 限速备份脚本

    脚本中scp复制rdb文件到备份存储机,scp增加-l 163840 参数,以20MB/s的速度进行拷贝,防止进程占用太多网络带宽。

阅读(8328) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~