当出现异常以后,可以从以下几个原因入手排查。

  • API或数据结构使用不合理

    • 慢查询。命令slowlog get [n]。 1)使用了复杂读为O(n)的命令导致,如hgetall等。 2)调整大对象,拆分为更小的对象。使用redis-cli -h{ip} -p{port} --bigkeys来扫描大对象。
  • CPU饱和的问题。可以使用redis-cli -h{host} -p{port} --stat获取当前redis服务器的统计信息,再根据info command-stats统计信息分析命令的合理开销之处。
  • 持久化或相关的阻塞。1)fork阻塞 2)AOF刷盘阻塞,可以用info persistence统计aof_delayed_fsync指标。 3)HugePage写操作阻塞。由于操作系统开启Transparent HugePages导致的副作用。
  • redis的官方文档 中对常见阻塞有说明。

外在原因:

  • CPU竞争

    • 进程竞争。
    • 绑定CPU,可能会导致由于子进程进行RDB/AOF重写时与父进程进行竞争,因此对参与了持久化或主从复制的主节点不建议绑定CPU。
  • 内存交换
  • 网络问题

标签: none

评论已关闭