Redis 常见问题及优化

Redis 常见问题及优化

在这里插入图片描述

1. fork操作

fork操作耗时的问题:

  • fork是个同步操作,虽然fork同步操作是非常快的,但是如果需要同步的数据量过大,fork就会阻塞redis主进程。

  • 与内存息息相关 :内存越大,耗时越长(与机器类型相关)

  • 查询持久化执行时间: late_fork_usec


改善fork

  • 有限使用物理机或者高效支持fork 操作的虚拟化技术
  • 控制Redis实例最大可用内存 : maxmenory
  • 合理配置Linux内存分配策略:vm.overcommit_memory = 1
  • 降低fork 频率:例如放宽AOF 重写自动触发时机,不必要的全量复制

2. 进程外开销

CPU:

  • 开销:RDB 和 AOF文件生成,属于CPU密集型
  • 优化:不做CPU绑定,不和CPU 密集型部署

内存:

  • 开销:fork内存开销,copy-on-write
  • 优化:echo never > /sys/kernel/mm/transparent_hugepage/enabled

硬盘:

  • 开销:AOF和RDB文件写入,可以结合iostat, iotop分析
  • 优化 :
  1. 不要和高硬盘负载服务器一起部署,队列,存储服务等
  2. no-appendfsync-on-rewrite= yes
  3. 根据写入量决定磁盘类型:例如ssd
  4. 单机多实例持久化文件目录可以考虑分盘

3. AOF追加阻塞

在这里插入图片描述

在这里插入图片描述

127.0.0.1:6379 > info persistence

-----
aof_delayed_fsync : 100   //aof阻塞等次数  会进行 +1操作
-----

个人博客:http://blog.yanxiaolong.cn/

end
  • 作者:yxl(联系作者)
  • 发表时间:2020-10-09 21:13
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者公众号二维码(公众号二维码见右边,欢迎关注)
  • 评论