当前位置: 首页 > news >正文

如果生产环境Redis实例CPU使用率很高,比如达到90%以上,请问可能产生的原因有哪些? 如何解决?

一、原因:

  • 使用高风险的Redis命令

例如KEYS、HGETALL或使用MGET、MSET、HMSET、HMGET一次操作大量Key等。通常情况下,命令的时间复杂度越高,在执行时会消耗越多的资源,从而导致CPU使用率上升。由于命令执行单元为单线程的特性,Redis在执行高消耗命令时会引发排队导致应用响应变慢。极端情况下,甚至可能导致实例被整体阻塞,引发应用超时中断或流量跳过缓存层直接到达后端的数据库侧,引发雪崩效应。

  • 热Key

某个或某部分Key的请求访问次数显著超过其他Key时,代表此时可能产生了热Key。热Key将会消耗Redis的大量CPU资源,从而影响其他Key的访问时延。

并且,在集群架构中,如果热Key较为集中地分布在部分数据分片节点,可能会导致CPU使用率倾斜(个别分片的CPU使用率远超其他分片)。

  • 大Key

大Key会占用更多的内存,同时,对大Key的访问会显著增加Redis的CPU负载和流量。大Key在一定程度上更容易形成热点从而造成CPU使用率高。如果大Key较为集中地分布在部分数据分片节点,可能会导致CPU使用率倾斜、带宽使用率倾斜及内存使用率倾斜。

  • 频繁建立短连接

频繁地建立连接,导致Redis实例的大量资源消耗在连接处理上。

  • AOF频繁写磁盘

AOF的写盘行为将会导致CPU使用率升高及实例整体的响应时延增加。

  • Lua 脚本执行

运行复杂或长时间的 Lua 脚本可能导致 CPU 使用率升高。

  • 慢查询

某些查询操作耗时较长,导致 Redis 处理效率下降。

二、解决:

  • 首先是要有Redis监控平台,能够及时预测问题发生,也能提供问题排查的数据以及日志。
  • 禁用高风险命令和高消耗命令,例如FLUSHALL、KEYS、HGETALL等。对于这些命令上线需要评估和审核。,非必要可以禁用。
  • 尽量避免通过短连接访问Redis,推荐使用线程池连接,比如Lettuce,Jedis等客户端。
  • 排查并优化大Key,根据业务的实际情况,将大Key拆分为小Key,以分散请求压力。
  • 调整写磁盘的频率,在访问高峰期可以暂时禁止写日志,在流量不高再开启写磁盘.不过这个要相机行事,存在丢失数据的风险
  • 在硬件资源也可以做一定的优化,推荐使用 SSD(固态硬盘)可以显著提高 Redis 写入磁盘的性能
http://www.jsqmd.com/news/314084/

相关文章:

  • POE交换机全方位解读
  • huggingface-cli
  • vue2:集成 particles.js 粒子特效指南
  • Tyr-PDGF A-Chain (194-211) ;YGRPRGSGKKRKRKRLKPT
  • Tyr-Ile-Gly-Ser-Arg-NH₂
  • springboot宠物领养专业的系统的设计与实现--138
  • day 151 10.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
  • java -cp 和 java -jar
  • Maven 项目打包:实现业务代码与第三方依赖分离
  • 平衡二叉树-day13
  • 破解信创改造痛点:国产DevOps平台选型的核心逻辑与实践路径
  • 通达信〖龙头模式突破〗套装指标,通过量能倍数判断突破有效性,抓右侧突破介入信号!
  • 警惕!AI系统面临的7大安全威胁及防御策略
  • JAVA毕业设计中经常容易报错的地方
  • 某旅游AI系统弹性扩展实战:用K8s实现酒店推荐弹性扩容
  • 基于SpringBoot+Vue+web的学生学业质量分析系统(源码+lw+部署文档+讲解等)
  • 探秘AI原生应用领域,AI代理的独特魅力
  • SQL Server更新统计信息会导致Parameter Sniffing
  • 计算机毕设java小区物业管理系统 基于Java的社区物业管理信息化系统设计与实现 Java技术驱动的住宅小区智能物业管理平台开发
  • 计算机毕设java学生综合评测系统的设计与实现 基于Java技术的学生综合素质评价系统开发与应用 Java环境下学生综合评测管理系统的构建与实现
  • 【毕业设计】python基于RSA算法的数字签名生成软件
  • 血管生成调控靶点TNC
  • 一屏掌握清新指数:负氧离子气象监测站助力景区智慧管理
  • Eureka在大数据服务治理中的应用现状与趋势
  • 大模型就是死胡同:一只松鼠为何比万亿参数更聪明?
  • 大数据时代的数据中台架构设计与实践
  • 单例模式 饿汉式(静态语句块)
  • 计算机毕设Java家庭财务管理系统 基于Java的家庭财务智能管理系统设计与实现 Java驱动的家庭财务综合管理平台开发
  • 计算机毕设Java建筑碳排放计算系统 基于Java的建筑全生命周期碳排放管理平台 Java架构下的建筑碳排放综合计算与管理系统
  • python租房大数据分析可视化系统 机器学习 K-means聚类算法 线性回归预测算法 机器学习 链家租房网 Django框架 scrapy 爬虫