redis变慢解决梳理

news/2025/2/11 22:07:13/

使用层面
1、操作复杂比如聚合等操作不要再server上做
2、操作bigKey内存释放与申请都影响
3、redis过期策略有关,如果某一个时间有大量过期,过期也是主线程操作,这个也会影响客户端的响应,可以使用命令查看,可以把过期时间打散,如果4.0以上版本可以把内存放在后台
4、淘汰机制,内存达到maxmemory,导致写慢,需要先淘汰再写,所以也慢了,不要有bigKey选择合适淘汰策略,一般用LRU.也可以痴爱分实列分摊压力
5、rehash策略,现象是写一部分抖动一下,这个有可能是在扩容,达到上限翻倍扩容期间慢。有时候申请内存的时候又正好出发了maxmemory则很有可能卡住。6.0以上版本优化了这个问题

运维层面
1、fork持久化,fork子进程时候主线程不能写入,子线程拷贝信息,所以单个实列控制在10G以下;slave节点进行备份,避免对主节点影响;关闭AOF/AOF rewirte也就不会有fork;不要部署在虚拟机;避免全量同步:适当调大 reply-back-size(这个词儿不精准)
2、内存大页
3、AOF,磁盘IO有问题会影响AOF进而影响redis主线程。rewrite配置no-appendfsync-on-rewrite = yes不刷盘;如果其他应用占用也要排查
4、绑定CPU,redis绑定CPU可以提高性能,主线程处理请求,后台线程处理一部AOF刷盘、lazyfree/异步释放fd;子进程RDB/AOF rewrite。子线程在这种模式下也会争抢CPU,可以通过绑定多个CPU核心尽量用物理核,4.0之后可以指定绑定的CPU对应哪个。
5、swap,所有请求都变慢了,服务基本不可用,内存数据被换到磁盘,直接从磁盘读取数据了,所以要预留足够内存,可以通过命令查看内存以及swap空间可以采用预警机制
6、内存碎片整理,如果内存增长很快,4.0之后开启了内存碎片整理但是打开后也有可能影响性能,这个也是主线程整理碎片,可以配置超过多少M在开启碎片整理,配置合理阈值等
7、网阔带宽过载,现场redis运行很久之后突然开始变慢切持续网络带宽报警,排查热点实例、扩容迁移、网络带宽监控预警
8、监控,监控不能掉以轻心,
9、其他,尽量使用长链接使用redis不要不停的三次握手四次挥手操作,其余的也注意cpu/内存、网络、IO等都会影响redis
10、copy on write/内存大页等redis运维知识点

从资源角度
cpu:复杂度过高、数据持久化
内存:bigkey申请内存、释放、数据过期、淘汰、内存大页、copy on write
磁盘 数据持久化、、AOF
网络:短链接、流量过载
计算机 cpu结构
操作系统:内存大页

一、应用建议
key尽量短,节省内存
避免bigkey 10K以下
聚合命令放在客户端
O(N) 小于300
避免集中过期
maxmemory
rehash

二、运维建议
隔离部署
单个实例10G以下
salve节点做备份
纯缓存可关闭AOF
实例不部署在虚拟机
关闭内存大页
AOF配置为everysec
谨慎绑定CPU
监控


http://www.ppmy.cn/news/74087.html

相关文章

10-双令牌实现登录升级

我们需要实现三个接口: > 双令牌登录,返回两个token,accessToken和refreshToken。 > 退出账号 就是去数据库中把refreshToken删掉。 > 刷新accessToken, accessToken过期后,返回前端异常,然后前端需要刷新。就是通过refreshToken 查询数据库获取userid 在生成…

ArduPilot开源代码之AP_Param

ArduPilot开源代码之AP_Param 1. 源由2. AP_Param类3. AP_Param主要方法3.1 AP_Param3.2 setup3.3 initialised3.4 group_id3.5 copy_name_info3.6 copy_name_token3.7 find3.8 set_default_by_name3.9 set_defaults_from_table3.10 set_by_name3.11 get3.12 set_and_save_by_n…

【UE4】从零开始制作战斗机(上:准备模型、定义函数和变量)

资源连接:(链接) 步骤: 1. 下载完资源并解压,资源内容如下: 2. 将上图中所有的.fbx文件导入ue 使用默认的导入设置就行,直接点击导入所有 导入后内容如下: 将资源中的textures也导…

面试:BFC(块级格式上下文)

BFC的概念 BFC 是 Block Formatting Context 的缩写,即块级格式化上下文。BFC是CSS布局的一个概念,是一个独立的渲染区域,规定了内部box如何布局, 并且这个区域的子元素不会影响到外面的元素,其中比较重要的布局规则有…

基于postman测试接口(整套接口测试)(附视频教程加源码)

目录 可以解决的问题 开启控制台 单个测试尝试 使用请求结果当参数 打印结果(JSON) 自定义可视化结果 随机参数 测试用例连接 一键测试接口集合 从swagger导入接口 自定义全局变量 可以解决的问题 几百个接口人工测试接口过于繁杂大多测试无法使用请求结果当参数可以…

webpack基础

1. 当面试官问Webpack的时候他想知道什么 前言 在前端工程化日趋复杂的今天,模块打包工具在我们的开发中起到了越来越重要的作用,其中webpack就是最热门的打包工具之一。 说到webpack,可能很多小伙伴会觉得既熟悉又陌生,熟悉是…

项目实战:构建一个Web应用(上篇)

在这个项目实战中,我们将构建一个待办事项管理Web应用。用户可以注册、登录、添加待办事项、修改待办事项状态、删除待办事项等。本文将详细介绍项目的基本架构和后端技术。 目录 ## 1. 项目简介 ### 1.1 技术栈 ## 2. 项目准备 ### 2.1 安装相关工具

虚拟机启动时出现“已启用侧通道缓解”的解决方法

系列文章目录 Hypervisor launch failed centos7配置ssh免密登陆完成,进行ssh登陆时出现”代理承认未能使用密钥签名“ 解决pip更新的代码 文章目录 系列文章目录 一、问题描述 二、启用了侧通道缓解的虚拟机可能会出现性能下降 (79832&#xff0…