一 redis节点收到外部的影响
- 1 是否受到其他密集型cpu服务的影响
建议:
1 不要于其他cpu密集型服务混一起部署
2 同类型的redis服务,不同的业务应用进行资源隔离部署
3 配置redis服务的cpu绑定。降低cpu上下文切换带来的性能消耗。但是也有有一个问题:redis持久化进程是一个非常耗资源的过程,这种自竞争也会引发redis服务的不稳定。
- 2 内存不够用,开始向磁盘swap。
1 排查内存使用 情况:info memory 碎片率小于1。 这也是监控redis服务稳定性的一个指标
2 查看redis进程 info server:找到redis的pid,然后
cat /proc/"pid"/smaps // 确定交换量为0kb或者4kb
- 3 redis的maxmemory设置
对redis服务进行必要的内存上限设置,进行内存隔离。
- 4 网络问题
1 带宽不够
2 系统连接数用完了
3 端口TCP backlog队列满了
4 网络延迟
二 redis服务本身
- 1 慢查询
1 key 长度设置是否合理
2 值类型选择是否合理
3 是够能批量查询
- 2 redis服务运行状况
redis-cli -h {host} -p {port} -- stat // 查看连接数,key总数。阻塞数等
- 3 持久化的影响
1 redis进行持久化操作需要fork出子进程,如果时间过长,会产生一定的影响 。可以通过命令:info stats 查看last_fork_usec:666 来找对应的数据,单位毫秒,不应该超过一秒。
2 AOF刷盘阻塞
AOF持久化开启后,后台每秒进行AOF文件刷盘操作,系统fsync到磁盘,如果主线程发现距离上次成功fsync超过2s,就会阻塞后台线程等待fsync完成以保证数据的安全性。