Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【最佳实践】巡检项:云数据库(Redis)CPU 使用率高

【最佳实践】巡检项:云数据库(Redis)CPU 使用率高

原创
作者头像
邵聪 SHAO CONG
修改于 2022-04-19 14:02:36
修改于 2022-04-19 14:02:36
3.1K0
举报
文章被收录于专栏:腾讯云顾问腾讯云顾问

问题描述

Redis作为内存型数据库,通常CPU并不会成为性能瓶颈,但是如果因为使用不当,那么也会出现CPU利用率高的问题影响处理效率。

常见的引起Redis CPU利用率高的可能原因包括:

1. 运行时间复杂度高的命令

2. 热点Key的大量访问导致负载高

3. 超出预期的访问请求量

解决方案

场景一:通过腾讯云Redis云监控查看到QPS突增导致的CPU负载高

评估增加的业务请求是否符合预期,如果是预期内正常的请求增加,那么建议通过集群水平扩展来增加CPU处理能力。

常见两种水平扩展的方式:增加分片数量或者增加只读副本数量。

1. 写请求增加的场景或者对数据一致性要求高的场景,增加集群分片数量

  • 标准版本优先评估升级至集群版本

具体实施办法请查看专栏文章的解决方案步骤一标准版本Redis升级集群版本

  • 集群版本增加分片数量

具体实施办法请查看专栏文章的解决方案步骤二Redis集群版本添加分片

2. 读请求增加的场景,开启读写分离并增加只读副本数量来获得读扩展能力

  • 开启读写分离
  • 增加只读副本

2.1 开启读写分离

2.1.1 注意事项:

  • 开启读写分离可能会导致数据读取不一致(副本节点数据延后于主节点),请业务优先确定接受可能的读数据不一致行为。
  • 跨可用区部署的实例开启读写分离后,读请求会引入跨区访问延迟,请提前评估。

2.2.2 前提条件:

  • 数据库实例版本为4.0及其以上。
  • 数据库实例状态为运行中。

2.2.3 实施步骤:

  • 在控制台-实例详情-节点管理页面,右上角开启副本只读开关。
  • 参考如下参数说明,来勾选只读路由策略。

只读路由策略:

默认为副本节点,系统账号的所有读请求均发往副本节点。

同时勾选副本节点和主节点,系统账号的读请求将发往主节点和副本节点。

只读本地节点:当实例为多可用区部署时,显示该参数。指就近访问功能,固定为已禁用。可在控制台参数配置页面配置参数 read-local-node-only 来开启和关闭该功能。

  • (可选)创建业务用的自定义只读账号。

基于客户的业务需求,来创建自定义的只读账号,查看如下参数说明来创建自定义的只读账号。

自定义账号的鉴权方式为账号名@密码,作为访问 Redis 的密码参数。

命令权限

勾选只读权限,表示账号只有读取数据的权限,无修改数据的权限。

如果勾选读写权限,表示账号具有读和写数据的权限。

只读路由策略:

将指定账号的读请求分发到仅副本节点或者/和主节点。

没有开通副本只读的实例,不支持路由到副本节点。

存在访问副本节点账号的实例,不允许关闭副本只读功能。

添加账号
添加账号
填写账号名称、密码、只读路由策略、命令权限
填写账号名称、密码、只读路由策略、命令权限
添加完成
添加完成
  • (可选)针对跨可用区部署的Redis实例,评估开启【只读本地节点】参数。

功能说明:

只读本地节点开启后,会自动就近访问,来避免跨区的访问延迟:负载均衡集群能够感知同可用区的 Proxy,并且在本可用区有 Proxy 节点可以访问的情况下,只访问本可用区的 Proxy。Redis 节点内置了可用区信息,Proxy 节点通过查询 Redis 节点的地理位置,将读请求路由到同可用区的节点。

优先级说明:

在开启就近访问的情况下,当就近访问策略与只读路由策略冲突时,优先读同可用区,然后再依照只读路由策略执行。

因此,针对跨区部署的实例,为了达到扩展只读能力的目的,建议在业务所在可用区均增加副本数量。具体增加的实施步骤请查看2.2 章节。

开启【只读本地节点】实施方法:

在实例详情页面-参数配置页面,选择参数read-local-node-only,修改为yes表示开启【只读本地节点】,no表示关闭,然后勾选对号确定修改即可。

2.2 增加只读副本数量

腾讯云Redis每个分片支持1-5副本部署,基于实例读业务的需求,在目标可用区部署新的副本即可。

【注意事项】增加副本会执行bgsave操作。

实施方法:

  • 在腾讯云控制台-实例列表页面,选择【配置变更】-【增加副本】发起任务。
  • 阅读变更影响。
  • 选择目标副本数量和副本/副本组所在的可用区,确认费用,点击【确认】即可。

针对单可用区实例,在当前可用区添加副本即可;针对多可用区实例,基于就近访问原则来评估新增副本所在的可用区。

场景二:通过腾讯云Redis云监控查看到突发热点Key大量访问导致单个分片CPU突增

热点Key的场景通常无法单纯通过水平扩展的方式来降低CPU,需要把热点Key 拆分到不同的分片,来降低单个分片的CPU负载。

1.获取异常热Key

  • 在腾讯云Redis控制台-系统监控页面,分析TOP 10 热 Key;例如下图获取实时热Key。
系统监控获取热Key
系统监控获取热Key
  • 或者在DBbrain-诊断优化-延迟分析-热Key分析页面获取TOP热Key。
DBBrain 热Key分析功能
DBBrain 热Key分析功能

2. 对热Key进行拆分

具体拆分方法由客户基于数据结构和业务逻辑来处理。以哈希类型为例,该热 Key 的类型是一个二级数据结构,该哈希元素个数可能较多,可以考虑将当前 hash 进行拆分。

场景三:查看到异常大Key访问导致个别分片CPU突增

通过大Key 拆分到不同的分片,降低单个分片的CPU负载。

  1. 获取异常大Key

DBbrain-异常诊断-内存分析创建及时大key分析或者查看历史的大Key分析结果。

即时大Key分析
即时大Key分析
查看TOP Key详情
查看TOP Key详情

2.基于数据结构和业务逻辑做大Key拆分

例如将Value过大的Key拆分成多个 key-value,将操作压力平摊到多个分片。

场景四:通过腾讯云Redis 慢查询查看到高复杂命令导致节点CPU利用率高

  1. 查看Redis慢日志获取耗时长的命令

Redis慢查询统计的是Cache节点上运行命令超过【slowlog-log-slower-than】参数值的命令,通常由于命令复杂度高导致。

或者DBbrain-诊断优化-慢日志分析-实例页面获取Redis慢查询。

2. 由客户基于业务逻辑针对获取到的复杂命令进行优化。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【最佳实践】巡检项:云数据库(Redis)跨可用区部署
相比于单可用区集群来说,腾讯云支持的多可用区集群提供更高的容灾能力,可有效的抵御可用区中断或者机房级别的故障。针对存量实例巡检发现的单可用区Redis集群,推荐升级至多可用区集群部署。
邵聪 SHAO CONG
2022/04/13
1.2K0
【最佳实践】巡检项:云数据库(Redis)利用率不足
检查到云数据库Redis的资源利用率较低,如果业务生命周期已经稳定,并且没有增长的计划,可以适当调整实例的规格配置,降低成本。
邵聪 SHAO CONG
2022/04/21
1.7K1
【最佳实践】巡检项:云数据库(Redis)副本数达到上限 5 个
针对读多写少的业务场景,为解决热点数据的集中读需求,腾讯云Redis支持读写分离功能,最大1主5从模式,即最大5倍的读能力扩展。当集群中的副本数量已经达到5个上限时,不能再通过简单增加副本的方式来扩展读能力,因此建议通过分片数量扩展的方式来提升集群总体的读写能力,应对可能发生的业务请求增加。
邵聪 SHAO CONG
2022/04/18
1K0
【最佳实践】巡检项:云数据库(MySQL)CPU 使用率
检查腾讯云数据库 MySQL 实例的 CPU 使用率情况,若使用率过高,可能会出现业务请求延迟增加,甚至无响应等风险。
王文安@DBA
2022/04/06
9950
【最佳实践】巡检项:云数据库(MySQL)CPU 使用率
Redis案例:热key导致实例CPU 100%
在Redis世界里,热key指的是那些在一段时间内访问频率特别高的键值,具体到业务场景,包括热点新闻、热门直播、秒杀活动等等。
brightdeng@DBA
2020/08/27
2.3K1
Redis案例:热key导致实例CPU 100%
【最佳实践】巡检项:Elasticsearch Service(ES)集群热点现象
注:在分片分布均匀的情况下,如果查询请求中指定了routing参数,也会导致查询请求聚集于某一部分分片,造成请求不均匀。
shanizeng
2022/08/22
1.5K0
【最佳实践】巡检项:云数据库(MongoDB)CPU 使用率
检查腾讯云数据库 MySQL 实例的 CPU 使用率情况,如果MongoDB实例的CPU使⽤率过⾼,会导致MonogoDB响应缓慢,甚⾄业务不可⽤。
ivesjiang@DBA
2022/04/07
9820
Redis集群方案对比:Codis、Twemproxy、Redis Cluster
数据持久化本质上是为了做数据备份,有了数据持久化,当Redis宕机时,我们可以把数据从磁盘上恢复回来,但在数据恢复之前,服务是不可用的,而且数据恢复的时间取决于实例的大小,数据量越大,恢复起来越慢。Redis的持久化过程可以参考《Redis持久化是如何做的?》。
Java技术栈
2020/09/22
5.4K1
Redis集群方案对比:Codis、Twemproxy、Redis Cluster
腾讯云数据库(Redis)监控最佳指南
简介 云数据库 Redis(TencentDB for Redis)是由腾讯云提供的兼容 Redis 协议的缓存数据库,具备高可用、高可靠、高弹性等特征。云数据库 Redis 服务兼容 Redis 2.8、Redis 4.0、Redis 5.0 版本协议,提供标准和集群两大架构版本。最大支持 4TB 的存储容量,千万级的并发请求,可满足业务在缓存、存储、计算等不同场景中的需求。 云数据库 Redis 的优势: 主从热备:提供主从热备,宕机自动监测,自动容灾。 数据备份:标准和集群架构数据持久化存储,可提供
腾讯云可观测平台
2021/01/08
5.2K0
Redis 生产架构选型解决方案
采用主从(master-replica)模式搭建。主节点提供日常服务访问,备节点提供HA高可用,当主节点发生故障,系统会自动在30秒内切换至备节点,保证业务平稳运行。
玄姐谈AGI
2021/07/29
3590
深入浅出百亿请求高可用Redis(codis)分布式集群揭秘
摘要:作为noSql中的kv数据库的王者,redis以其高性能,低时延,丰富的数据结构备受开发者青睐,但是由于redis在水平伸缩性上受限,如何做到能够水平扩容,同时对业务无侵入性是很多使用redis的开发人员都会面临的问题,而redis分布式解决方案的一个开源产品【codis】较好的弥补了这一弱势,本文主要讲解codis是如何做到对业务无感知,平滑迁移,迁移性能高,迁移异常处理,高可用以及常见的redis的避坑指南,虽然codis目前随着公司的nosql产品越来越成熟,生命周期也即将结束,不过鉴于还
腾讯技术工程官方号
2019/05/16
2K0
深入浅出百亿请求高可用Redis(codis)分布式集群揭秘
Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题:
CSDN技术头条
2021/03/22
6.4K0
Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
Redis数据库云端最佳技术实践
邹鹏,腾讯高级工程师,腾讯云数据库Redis负责人,多年数据库、网络安全研发经验。在网络、计算、存储、安全等领域有深入的研究和丰富的产品化经验。 在Redis、MySQL等数据库的高可用、高可靠和中间件方面有丰富的实践经验。
腾讯云数据库 TencentDB
2018/11/06
1.4K0
Redis数据库云端最佳技术实践
邹鹏:Redis数据库云端最佳技术实践
这次过来主要是和大家分享一下,腾讯云上个月正式上线的Redis4.0集群版的相关内容,跟大家分享我们在做集群版的时候有哪些思考,我们怎么去设计整个系统架构,最终我们做了哪些东西。大概会有三个点,第一个点是说Redis的使命,我们看Redis是什么产品,为什么这么火,第二块就是腾讯云Redis4.0集群设计经历了哪些思考,最终做成什么样子,最后是2018年年初,登录到腾讯云的自研兼容Redis协议的CKV引擎,他是怎么样的一个架构设计。
腾讯云开发者社区技术沙龙
2018/11/05
1.5K0
鹅厂数据库为联合国全球最大规模的线上对话提供技术支持!
刚刚,联合国在纽约总部正式宣布:腾讯公司成为联合国全球合作伙伴,为联合国成立75周年提供全面技术方案。在联合国成立75周年的对话系列活动中,腾讯会议将为联合国提供在线会议和沟通交流平台,面向全球公民灵活组织不同规模的在线会议。而腾讯云Redis和TDSQL为腾讯会议提供了底层数据库支持。
腾讯云数据库 TencentDB
2020/04/01
6450
Redis基础知识典藏版:架构设计、功能特性、应用场景、操作命令……
Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本文将详细介绍 Redis 的主要功能特性、典型应用场景、演进过程、架构设计以及数据类型和操作命令,并结合腾讯云数据库 Redis 的实际应用。
腾讯云开发者
2024/07/25
1.2K0
Redis基础知识典藏版:架构设计、功能特性、应用场景、操作命令……
Redis认知-分布式系统中的单主怎么组建一个集群来抗高并发
1、Redis-Server:Redis服务端,用于存储用户数据的,此处就一个master节点【IP: 100.100.100.1:6379】
Janesong
2024/07/07
2040
Redis进阶学习10---redis最佳实践
当key可以转换为数字时,即key由数字组成,底层会编码为int,如果key长度小于44字节,采用embstr编码类型,否则采用非连续空间存储,为raw编码类型
大忽悠爱学习
2022/05/14
5540
Redis进阶学习10---redis最佳实践
Redis - 高并发场景下的Redis最佳实践_翻过6座大山
在高并发系统中,Redis缓存通常被视为数据在存入数据库之前的重要中间层,其设计专注于缓存功能,性能往往比传统数据库高出一个数量级以上。以Redis单实例而言,其读取并发能力可达到10万QPS(官方理论值)。
小小工匠
2024/05/26
1.4K0
Redis - 高并发场景下的Redis最佳实践_翻过6座大山
【最佳实践】巡检项:云数据库(Redis)使用基础网络
基础网络是早期腾讯云云上网络,后在基础网络上演进出具备自主可控、安全性更高的私有网络,私有网络作为当前的主流云网络,推荐作为业务长期发展使用。
邵聪 SHAO CONG
2022/04/14
1.5K0
推荐阅读
相关推荐
【最佳实践】巡检项:云数据库(Redis)跨可用区部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档