前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis性能变慢之Checklist

Redis性能变慢之Checklist

原创
作者头像
夜半钟鸣
修改2021-02-09 16:39:35
6870
修改2021-02-09 16:39:35
举报
文章被收录于专栏:小树洞小树洞

复杂度高的命令

使用复杂度高的命令:如SORT/SUION/ZUNIONSTORE/KEYS等,或一次性检索全量数据:如LRANGE key 0 N,但N很大等

分析

  • 慢日志查看是否存在这些命令
  • redis进程的CPU的使用率是否飙升,聚合运算导致(找到慢的时间点然后检查CPU)

解决

  • 避免使用复杂度高的命令,尽量用其他方式替代,比如在客户端做聚合运算
  • 使用渐进式遍历代替全量查询命令,scan/sscan/zscan/hscan

Bigkey

bigkey的操作导致阻塞

分析

  • slowlog出现一些key的set/delete操作变慢(bigkey 分配/释放内存缓慢)
  • redis-cli --bigkeys扫描出很多bigkey

解决

  • 优化业务,避免bigkey
  • Redis 4.0+可开启lazy-free机制

大量key集中过期

  • Redis info中的expired_keys指标短期突增
  • 业务使用EXPIREAT/PEXPIREAT命令

解决

  • 优化业务,key的过期时间加上随机值进行打散,减小redis释放过期键的压力

内存达到maxmemory阈值

  • 内存达到阈值且redis写入量较大,则key的淘汰压力较大
  • redis info中的evicted_keys指标短期突增

解决:

  • 优化业务,主动控制key的淘汰策略
  • 内存扩容或改造成集群

大量短连接请求

短连接的建立 增加了TCP的三次握手和四次挥手网络耗时

解决:

使用长连接

生成RDB和AOF重写fork耗时严重

  • RDB生成、AOF重写时候,如果实例内存较大,则写入量较大的情况下拷贝内存页就更耗时
  • Redis info中latest_fork_usec耗时变长

解决:

  • 控制实例大小
  • 部署在IO能力更好的存储上
  • 结合业务优化RDB和AOF的策略,是否可关闭AOF以及RDB生成策略
  • 合理配置repl-backlog和slave client-output-buffer-limit,避免主从全量同步
  • 监控latest_fork_usec耗时是否变长

AOF使用awalys机制

awalys 会造成主线程堵塞

解决:

  • everysecond机制
  • 数据丢失不敏感则关闭aof

使用了swap

  • 所有请求都变慢
  • 大量慢日志
  • 查看redis进程是否使用了swap(free -g; cat /proc/pid/smaps | egrep '^(Swap|Size)' )

解决:

  • 增加内存
  • 集群改造

进程绑定CPU不合理

  • Redis进程只绑定一个CPU逻辑核
  • NUMA架构下,网络中断处理程序和Redis进程没有绑定在同一个Socket下

解决:

  • Redis进程绑定多个CPU逻辑核,比如2个逻辑核在1个物理核下
  • 网络中断处理程序和Redis进程绑定在同一个Socket下

透明大页开启

  • 生成RDB和AOF重写期间,主线程处理写请求耗时变长(拷贝内存副本耗时变长)

解决:

关闭透明大页

网卡负载变高

  • TCP/IP延时变高,存在较明显的丢包和重传现象
  • 存在别的消耗较多网络流量的应用和redis部署在同一台server上,占满带宽

解决:

  • 隔离部署,redis 独享 server
  • 网络负载情况监控到位

磁盘IO

  • 持久化时磁盘IO压力大,iowait明显

解决:

  • 检查磁盘性能,更换磁盘
  • 虚机部署的话,同一宿主机上的其他虚机是否存在磁盘争用
  • 持久化策略调整

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 复杂度高的命令
  • Bigkey
  • 大量key集中过期
  • 内存达到maxmemory阈值
  • 大量短连接请求
  • 生成RDB和AOF重写fork耗时严重
  • AOF使用awalys机制
  • 使用了swap
  • 进程绑定CPU不合理
  • 透明大页开启
  • 网卡负载变高
  • 磁盘IO
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档