IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis - Redis为什么变慢了?如何排查Redisi性能问题 - 学习/实践 -> 正文阅读

[大数据]Redis - Redis为什么变慢了?如何排查Redisi性能问题 - 学习/实践

1.应用场景

主要用于学习Redis变慢的原因以及如何解决性能问题。

2.学习/操作

1.文档阅读

Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文? -- 推荐

19 | 波动的响应延迟:如何应对变慢的Redis?(下)-极客时间

2.整理输出

截图

极客时间老师

1. 获取 Redis 实例在当前环境下的基线性能。

2. 是否用了慢查询命令?如果是的话,就使用其他命令替代慢查询命令,或者把聚合计算命令放在客户端做。

3. 是否对过期 key 设置了相同的过期时间?对于批量删除的 key,可以在每个 key 的过期时间上加一个随机数,避免同时删除。

4. 是否存在 bigkey? 对于 bigkey 的删除操作,如果你的 Redis 是 4.0 及以上的版本,可以直接利用异步线程机制减少主线程阻塞;如果是 Redis 4.0 以前的版本,可以使用 SCAN 命令迭代删除;对于 bigkey 的集合查询和聚合操作,可以使用 SCAN 命令在客户端完成。

5. Redis AOF 配置级别是什么?业务层面是否的确需要这一可靠性级别?如果我们需要高性能,同时也允许数据丢失,可以将配置项 no-appendfsync-on-rewrite 设置为 yes,避免 AOF 重写和 fsync 竞争磁盘 IO 资源,导致 Redis 延迟增加。当然, 如果既需要高性能又需要高可靠性,最好使用高速固态盘作为 AOF 日志的写入盘。

6. Redis 实例的内存使用是否过大?发生 swap 了吗?如果是的话,就增加机器内存,或者是使用 Redis 集群,分摊单机 Redis 的键值对数量和内存压力。同时,要避免出现 Redis 和其他内存需求大的应用共享机器的情况。

7. 在 Redis 实例的运行环境中,是否启用了透明大页机制?如果是的话,直接关闭内存大页机制就行了。

8. 是否运行了 Redis 主从集群?如果是的话,把主库实例的数据量大小控制在 2~4GB,以免主从复制时,从库因加载大的 RDB 文件而阻塞。

9. 是否使用了多核 CPU 或 NUMA 架构的机器运行 Redis 实例?使用多核 CPU 时,可以给 Redis 实例绑定物理核;使用 NUMA 架构时,注意把 Redis 实例和网络中断处理程序运行在同一个 CPU Socket 上。实际上,影响系统性能的因素还有很多,这两节课给你讲的都是应对最常见问题的解决方案。

Kaito


关于如何分析、排查、解决Redis变慢问题,我总结的checklist如下:

1、使用复杂度过高的命令(例如SORT/SUION/ZUNIONSTORE/KEYS),或一次查询全量数据(例如LRANGE key 0 N,但N很大)

分析:

a) 查看slowlog是否存在这些命令

b) Redis进程CPU使用率是否飙升(聚合运算命令导致)

解决:

a) 不使用复杂度过高的命令,或用其他方式代替实现(放在客户端做)

b) 数据尽量分批查询(LRANGE key 0 N,建议N<=100,查询全量数据建议使用HSCAN/SSCAN/ZSCAN)

2、操作bigkey

分析:

a) slowlog出现很多SET/DELETE变慢命令(bigkey分配内存和释放内存变慢)

b) 使用redis-cli -h $host -p $port --bigkeys扫描出很多bigkey

解决:

a) 优化业务,避免存储bigkey

b) Redis 4.0+可开启lazy-free机制

3、大量key集中过期

分析:

a) 业务使用EXPIREAT/PEXPIREAT命令

b) Redis info中的expired_keys指标短期突增

解决:

a) 优化业务,过期增加随机时间,把时间打散,减轻删除过期key的压力

b) 运维层面,监控expired_keys指标,有短期突增及时报警排查

4、Redis内存达到maxmemory

分析:

a) 实例内存达到maxmemory,且写入量大,淘汰key压力变大

b) Redis info中的evicted_keys指标短期突增

解决:

a) 业务层面,根据情况调整淘汰策略(随机比LRU快)

b) 运维层面,监控evicted_keys指标,有短期突增及时报警

c) 集群扩容,多个实例减轻淘汰key的压力

5、大量短连接请求

分析:Redis处理大量短连接请求,TCP三次握手和四次挥手也会增加耗时

解决:使用长连接操作Redis

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

分析:

a) Redis变慢只发生在生成RDB和AOF重写期间

b) 实例占用内存越大,fork拷贝内存页表越久

c) Redis info中latest_fork_usec耗时变长

解决:

a) 实例尽量小

b) Redis尽量部署在物理机上

c) 优化备份策略(例如低峰期备份)

d) 合理配置repl-backlog和slave client-output-buffer-limit,避免主从全量同步

e) 视情况考虑关闭AOF f) 监控latest_fork_usec耗时是否变长

7、AOF使用awalys机制

分析:磁盘IO负载变高

解决:

a) 使用everysec机制

b) 丢失数据不敏感的业务不开启AOF

8、使用Swap

分析:

a) 所有请求全部开始变慢

b) slowlog大量慢日志

c) 查看Redis进程是否使用到了Swap

解决:

a) 增加机器内存

b) 集群扩容

c) Swap使用时监控报警

9、进程绑定CPU不合理

分析:

a) Redis进程只绑定一个CPU逻辑核

b) NUMA架构下,网络中断处理程序和Redis进程没有绑定在同一个Socket下

解决:

a) Redis进程绑定多个CPU逻辑核

b) 网络中断处理程序和Redis进程绑定在同一个Socket下

10、开启透明大页机制

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

解决:关闭透明大页机制

11、网卡负载过高

分析:

a) TCP/IP层延迟变大,丢包重传变多

b) 是否存在流量过大的实例占满带宽

解决:

a) 机器网络资源监控,负载过高及时报警

b) 提前规划部署策略,访问量大的实例隔离部署

总之,Redis的性能与CPU、内存、网络、磁盘都息息相关,任何一处发生问题,都会影响到Redis的性能。

主要涉及到的包括业务使用层面和运维层面:业务人员需要了解Redis基本的运行原理,使用合理的命令、规避bigke问题和集中过期问题。运维层面需要DBA提前规划好部署策略,预留足够的资源,同时做好监控,这样当发生问题时,能够及时发现并尽快处理。

后续补充

...

3.问题/补充

TBD

4.参考

Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文? -- 推荐19 | 波动的响应延迟:如何应对变慢的Redis?(下)-极客时间

后续补充

...

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:46:53  更:2022-04-07 22:47:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:34:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码