背景:
公司的音视频 盗版检测业务,使用redis-cluster作为 key-value 数据库, 使用张图片的 特征hash值作key。因为数据量太大,机器有限,集群内没有slaver
问题描述
线上服务报错 (SCARD 4288594168) of pipeline caused error: MOVED 9239 10.xxx.xx.149:6390,这个端口 是redis集群中一个节点。
1 使用redis-trib check 10.xxx.xx.149:6390, 报 无法连接的错误
2 查看 6390节点的log, 报错 Error opening /setting AOF rewrite IPC pipes: Numerical result out of range
google了一番,发现这个链接 linkA:http://blog.csdn.net/syq521125/article/details/53006317里提到了如何解决。
我按照他的第2种说法 重启了redis, 我的aof文件 4.4G左右,大约几分钟 服务就起来了 ,重新执行redis-trib check 10.xxx.xx.149:6390, 集群已经能访问6390节点了。
我挂掉的这个节点的 内存消耗 已经达到了14.5g, 对应的aof文件4.4G。按照linkA种表达的问题,我需要对数据库的节点进行扩充,使单点的数据量减少。
我将集群中 redis实例数目加倍后,单点的内存消耗 7g左右,文件2G.觉得应该暂时安全了,以我的经验看,10g内存以下,还都是安全的。
自己的心理变化
这是我第一次遇到 线上的数据库挂掉,线上问题,谨小慎微,所以犹豫了1个小时,要不要重启,中间也查了好一会, 发现重启后还行,数据恢复的挺快。