前往小程序,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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
百度网盘 python 同步客户端 SyncY
前些日子写过一个关于SyncY:传送门,是perl版本的, 今天推荐这个python版本的,更新到2.1.0版本了.。。 之所以叫syncy为同步客户端,是因为它与"bpcs_uploader","bypy"的区别,就相当于"百度同步盘"与“百度云管家”的区别类似。 SyncY-Python-v2.1.0 root@ip:~/syncy# apt-get install python-pycurl 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信
qinyang
2018/06/05
1.2K0
Ubuntu下安装配置安全的Apache Web服务器
本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。
星哥玩云
2022/06/28
1.3K0
Ubuntu下安装配置安全的Apache Web服务器
ubuntu下彻底删除apache重装
第一步: sudo apt-get remove acpche 第二步: sudo apt-get purge apache2 apache2.2-common apache2-mpm-prefork apache2-utils apache2.2-bin libapache2-mod-php5 第三步: sudo apt-get autoremove 本文地址:https://www.zwblog.cn/post/17.html 版权声明:本文为原创文章,版权归 witt 所有,欢迎分享
herve
2018/06/25
3.1K1
pogoplug openwrt 安装 百度网盘python客户端 bypy
openwrt下的python客户端SyncY总是提示“import pycurl”,明明都已经配置OK的。有知道的人请回复我吧。。。 反正bypy客户端竟然配置成功。意外之喜。。。 首先要把python配置好,安装配置python是一定的 root@wangqinyang:~/bypy# opkg install python Package python (2.7.8-3) installed in root is up to date. python需要Requests库,先看看有
qinyang
2018/06/05
2.1K0
免客户端不限速下载百度网盘文件
由于百度网盘的限制越来越严格,非会员账号的下载速度往往只有几十到几百 KB 每秒。而如果平时用的不多的话,单独为百度网盘开个会员又有些浪费。不过最近有网友研究出了远程解析并返回下载地址的程序,这样一来我们就能够通过超级会员所解析到的不限速地址来实现免客户端不限速下载了。
reizhi
2022/09/26
3.4K0
免客户端不限速下载百度网盘文件
ubuntu debian 百度网盘的Python客户端 bypy
先安装python环境 sudo apt-get install python-pip python-dev build-essential sudo pip install requests 然后下载客户端 传送门 百度网盘:bypy 解压,运行 ./bypy list 首先他会要求你访问一个网址,需要你授权,授权后复制code给程序,如果没有报错,就可以看到你的同步目录了,你可以在网盘的我的应用数据文件夹里找到bypy文件夹,他就是应用目录了。 Please vis
qinyang
2018/06/05
2.9K1
Linux系统之安装showdoc文档工具
江湖有缘
2023/10/06
8231
Linux系统之安装showdoc文档工具
lamp on ubuntu
A "LAMP" stack is a group of open source software that is typically installed together to enable a server to host dynamic websites and web apps. This term is actually an acronym which represents the Linux operating system, with the Apache web server. The site data is stored in a MySQL database, and dynamic content is processed by PHP.
ke1th
2019/05/29
7680
lamp  on ubuntu
Apache 性能配置优化
刘远飞
2017/04/24
7.8K0
学习笔记0507----LAMP架构
LAMP:Linux+Apache(httpd)+Maridb(Mysql)+PHP,常用来搭建动态网站或者服务器的开源软件。
嘻哈记
2020/11/24
2K0
php面试题和答案_百度php面试题及答案
大家好,又见面了,我是你们的朋友全栈君。 基础题: 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提
全栈程序员站长
2022/09/28
2.8K0
Install LAMP
由 Linux 提供运行环境,Mysql 提供关系型存储,Apache 提供 Web 服务,PHP 完成应用逻辑
franket
2021/08/11
2.1K0
Centos 6安装完美搭建mysql、php、apache之旅
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116468.html原文链接:https://javaforall.cn
全栈程序员站长
2022/01/21
6120
Centos 6安装完美搭建mysql、php、apache之旅
Ubuntu 14.04下Nagios4+NDOUtils2.0+Cntreon2.5.4配置
centreon是开源的IT监控软件,由法国人于2003年开发,最初名为Oreon,并于2005年正式更名为centreon。 centreon作为nagios的分布式监控管理平台,其功能之强大,打造了centreon在IT监控方面强势地位,它的底层使用nagios监控软件,nagios通过ndoutil模块将监控数据写入数据库,centreon读取该数据并即时的展现监控信息,通过centreon可以简单地管理和配置所有nagios,因此,完全可以使用centreon轻易的搭建企业级分布式IT基础运维监控系统。
星哥玩云
2022/07/04
3000
如何在 Linux 上安装/卸载一个文件中列出的软件包?
在某些情况下,你可能想要将一个服务器上的软件包列表安装到另一个服务器上。例如,你已经在服务器 A 上安装了 15 个软件包并且这些软件包也需要被安装到服务器 B、服务器 C 上等等。
用户8639654
2021/09/23
2.7K0
【Spring Boot 20,孙鑫Java视频教程百度网盘
这里需要注意的是 aliyun-java-sdk-vod 飘红问题,aliyun-java-sdk-vod 没有开源,所以不能直接在pom文件中直接引用依赖。
全栈程序员站长
2022/08/30
9180
【Spring Boot 20,孙鑫Java视频教程百度网盘
java获取百度网页内容
RestTemplate是Spring提供的用于访问RESTful服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。RestTemplate默认依赖JDK提供http连接的能力 (HttpURLConnection),也可以通过替换为例如 Apache HttpComponents、Netty或OkHttp等其它HTTP 客户 端,OkHttp的性能优越,本博客使用OkHttp,官网, github。
许喜朝
2021/01/27
1.4K0
java获取百度网页内容
日请求亿级的 QQ 会员 AMS 平台 PHP 7 升级实践
文章主要介绍了从PHP 5.6升级到PHP 7.x的必要性,以及升级过程中可能遇到的问题和解决方法。作者通过介绍升级过程和优化后的性能提升,让读者对升级过程有更深入的了解。同时,也提醒大家在升级过程中需要注意的问题,以确保升级能够顺利进行。
小时光
2016/09/28
15.7K9
日请求亿级的 QQ 会员 AMS 平台 PHP 7 升级实践
[PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索(二)
前情提要:最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台,名字是网盘小说。用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址。就是这么一个简单的功能,类似很多的网盘搜索类网站,我这个采集和搜索程序都是PHP实现的,全文和分词搜索部分使用到了开源软件xunsearch。
唯一Chat
2019/09/10
4.7K0
网上的腾讯php面试题 (有答案版本)
一、PHP开发部分 1.合并两个数组有几种方式,试比较它们的异同 答:1、array_merge() 2、’+’ 3、array_merge_recursive array_merge 简单的合并数组 array_merge_recursive 合并两个数组,如果数组中有完全一样的数据,将它们递归合并 array_combine 和 ‘+’ :合并两个数组,前者的值作为新数组的键 2.请写一个函数来检查用户提交的数据是否为整数(不区分数据类型,可以为二进制、八进制、十进制、十六进制数字) 答:其实主要还是is_int和 floor 这个方法
码农编程进阶笔记
2021/07/20
1.8K0
推荐阅读
相关推荐
百度网盘 python 同步客户端 SyncY
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档