首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏烹饪一朵云

    窥探redis为何会变慢

    那么问题来了,redis速度快的flag是直接写官网的公屏上,那我们不妨来推演一下,redis变慢的原因,知其然而知其所以然。 redis为何会变慢 随着时间的堆积,数据的累增,系统很直观的会感觉的变慢的现象,对于大型程序来说,主要是内存碎片啊、堆栈溢出啊等等这些关于垃圾回收机制导致的,另外的还是跟其他组件在配合中,网络开销导致的现象 找到你认为可能变慢Redis 实例,测试这个实例的基准性能 如果你观察到,这个实例的运行延迟是正常 Redis 基准性能的 2 倍以上,即可认为这个 Redis 实例确实变慢了 发现问题 业务服务器到 Redis 服务器之间的网络存在问题,例如网络线路质量不佳,网络数据包在传输时存在延迟、丢包等情况 Redis 本身存在问题,需要进一步排查是什么原因导致 Redis 变慢 分析问题 分析问题的三把斧 = yes),在执行 DEL 命令时,释放内存也会放到后台线程中执行 集中过期,redis雪崩的现象 变慢的时间点很有规律,例如某个整点,或者每间隔多久就会发生一波延迟 参考资料 https://redis.io

    85510发布于 2021-03-21
  • 来自专栏小树洞

    Redis性能变慢之Checklist

    比如在客户端做聚合运算 使用渐进式遍历代替全量查询命令,scan/sscan/zscan/hscan Bigkey bigkey的操作导致阻塞 分析 slowlog出现一些key的set/delete操作变慢 (bigkey 分配/释放内存缓慢) redis-cli --bigkeys扫描出很多bigkey 解决 优化业务,避免bigkey Redis 4.0+可开启lazy-free机制 大量key集中过期 Redis info中的expired_keys指标短期突增 业务使用EXPIREAT/PEXPIREAT命令 解决 优化业务,key的过期时间加上随机值进行打散,减小redis释放过期键的压力 内存达到 监控latest_fork_usec耗时是否变长 AOF使用awalys机制 awalys 会造成主线程堵塞 解决: everysecond机制 数据丢失不敏感则关闭aof 使用了swap 所有请求都变慢 不合理 Redis进程只绑定一个CPU逻辑核 NUMA架构下,网络中断处理程序和Redis进程没有绑定在同一个Socket下 解决: Redis进程绑定多个CPU逻辑核,比如2个逻辑核在1个物理核下 网络中断处理程序和

    1K20发布于 2021-02-09
  • 来自专栏技术那些事

    你的 Redis 为什么变慢了?

    当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 如果确实使用到了Swap,要及时整理内存空间,释放出足够的内存供Redis使用,然后释放Redis的Swap,让Redis重新使用内存。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的? 之前我们就遇到这种问题,特点就是从某个时间点之后就开始变慢,并且一直持续。这时你需要检查一下机器的网卡流量,是否存在网卡流量被跑满的情况。

    1.3K40发布于 2020-10-21
  • 来自专栏Owen's World

    Redis变慢了,你会怎么排查

    当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 如果确实使用到了Swap,要及时整理内存空间,释放出足够的内存供Redis使用,然后释放Redis的Swap,让Redis重新使用内存。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的? 之前我们就遇到这种问题,特点就是从某个时间点之后就开始变慢,并且一直持续。这时你需要检查一下机器的网卡流量,是否存在网卡流量被跑满的情况。

    1K20编辑于 2021-12-07
  • 来自专栏程序猿DD

    你的 Redis 为什么变慢了?

    当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的? 之前我们就遇到这种问题,特点就是从某个时间点之后就开始变慢,并且一直持续。这时你需要检查一下机器的网卡流量,是否存在网卡流量被跑满的情况。 往期推荐 Java程序员必备的11大IntelliJ插件 如果MySQL事务中发生了网络异常? Spring Boot 注解大全,一键收藏!回城路上复习!

    97220编辑于 2023-04-04
  • 来自专栏Redis实战系列

    Redis变慢?深入浅出Redis性能诊断系列文章(一)

    图片一、Redis访问架构链路分析首先,在深入分析Redis服务前,需要弄清楚是不是真的Redis访问变慢了。 对于第一点从应用到Redis这条链路变慢的原因可能有如下两个:应用到Redis服务之间的链路出现问题了,比如Redis所在服务器网络负载过高丢包、交换机问题、Proxy变慢等;Redis本身确实因为一些原因变慢了 服务器配置比较低时延迟为 10ms 时,才认为 Redis响应变慢了,但是如果配置比较高,那么可能延迟是 1ms 时就可以认为 Redis 变慢了。 是否真的变慢了:在相同配置的服务器上,测试一个正常 Redis 实例的基准性能找到可能变慢Redis 实例,测试这个实例的基准性能对比这个实例的运行延迟与正常 Redis 基准性能,如果性能差距在两倍以上 ,就可以认为这个 Redis 服务确实响应变慢了如果确认是 Redis服务变慢了,那如何排查是哪里发生了问题呢?

    1K30编辑于 2022-09-19
  • 来自专栏DBA随笔

    Redis变慢了,到底慢在哪儿?(2)

    00、Redis变慢了,到底慢在哪儿? 昨天的内容中,我们说了Redis变慢有可能存在的2个方面原因: 1、Redis内部的阻塞式操作或者命令 2、CPU核心以及NUMA架构 对于第一部分,主要是Redis自身的实现原理导致的,我们暂时不去做过多讨论 第二部分是在多核心CPU场景下,多核心之间的频繁上下文调度会导致Redis变慢,今天我们更近一步的分析一下多核心CPU场景以及NUMA架构下的Redis运行机制。 每个物理核心有2个逻辑线程,Threads per core=2 4、累计2*6*2=24个逻辑核心,其中 NUMA node0的CPU核编号是0~5,12~17 NUMA node1的CPU核编号是6~11,18 资源竞争,当后台子进程或者后台线程占用了CPU的资源时候,Redis的主线程响应就会被阻塞,从而变慢

    1.1K30发布于 2021-08-05
  • 来自专栏后端架构师

    Redis 突然变慢了如何排查并解决?

    Redis 出现性能波动的时候,比如达到几秒到十几秒,这个很明显我们可以认定 Redis 性能变慢了。 有的硬件配置比较高,当延迟 0.6ms,我们可能就认定变慢了。 ❝那我们该如何定义 Redis 真的变慢了呢? 所以,我们需要对当前环境的 Redis 基线性能做测量,也就是在一个系统在低压力、无干扰情况下的基本性能。 当你发现 Redis 运行时时的延迟是基线性能的 2 倍以上,就可以判定 Redis 性能变慢了。 当出现百 MB,甚至 GB 级别的 swap 大小时,就表明,此时,Redis 实例的内存压力很大,很有可能会变慢。 总结 如下检查清单,帮助你在遇到 Redis 性能变慢的时候能高效解决问题。

    97550编辑于 2022-04-08
  • 面试题:Redis服务为何突然变慢

    大家都是知道Redis纯内存数据库,处理速度很快,CPU架构,也会影响到 Redis 的性能 本文主要解决的一个问题在 Redis 为什么变慢,如何解决的? 你会疑问:Redis大家都说它快,什么情况变慢 Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右 Redis 事件循环基于 epoll/kqueue, Redis 已在超过 60,000 个连接的情况下进行了基准测试, 并且仍然能够维持 50,000 q/s 的吞吐量。 怎么会变慢呢? 一、确定Redis是否真的变慢了 1. 运行时延迟是其基线性能的 2 倍及以上,就可以认定 Redis 变慢了 2. -11 2.1 代码如何实现的 https://github.com/redis/redis/blob/6.2.17/src/rdb.c#L1440C9-L1440C28 int rdbSaveBackground

    37400编辑于 2025-04-26
  • 来自专栏DBA随笔

    Redis变慢了,到底慢在哪儿?(3)

    微信公众号:DBA随笔 01、如何判断Redis变慢了? 线上的Redis服务经经常有业务反馈响应慢的问题,针对这类问题,最好的分析方法是确定一个Redis的基准性能,然后去分析究竟什么原因导致的Redis变慢。 之前文章中,我们说过Redis变慢的两个主要原因, Redis内部阻塞式的操作或命令 CPU多核心及NUMA架构对Redis的影响, 其中,我们也对CPU多核和NUMA架构下的Redis性能优化进行了介绍 详情请参考: Redis变慢了,到底慢在哪儿?(2) 今天我们来看其他方面的性能优化。 AOF刷盘层面 除了命令级别的Redis变慢之外,还有其他层面的Redis变慢问题,我们来看AOF刷盘时候可能导致Redis变慢的一个瓶颈点。

    93410发布于 2021-09-03
  • 来自专栏DBA随笔

    Redis变慢了,到底慢在哪儿?(1)

    00、Redis变慢了,到底慢在哪儿? 最近由于工作需要,在维护线上的RedisRedis相关的原理部分看的比较多,Redis最常见的业务问题就是响应慢,今天我们来看看Redis慢在哪里? 首先来看有可能引起Redis变慢的那些情况。其实,Redis变慢的主要因素是各种类型的阻塞,可以这么说:阻塞是Redis的噩梦。 总体上来说,Redis的阻塞存在很多可能,今天重点说以下2个方面: 1、Redis内部的阻塞式操作或者命令 2、CPU核心以及NUMA架构 01、Redis内部的阻塞式操作或命令 假设你的Redis 是以最复杂的集群的模式部署的,那么在Redis客户端和Redis服务交互的时候,整个链路包含网络IO、磁盘写入、主从节点复制、切片集群数据迁移等等,这些步骤都可能产生阻塞,下面逐一分析。 1、阻塞式命令会影响Redis的性能。

    1.2K20发布于 2021-08-05
  • 来自专栏weixuqin 的专栏

    redis 学习(11)-- redis pipeline

    redis pipeline 什么是流水线(pipeline) 首先来看 redis 执行一次操作所需要的时间: 1 次时间 = 1 次网络时间 + 1次命令时间 ? 对比如下: M操作在Redis队列中是一个原子操作,pipeline不是原子操作 pipeline与M操作都会将数据顺序的传送顺序地返回(redis 单线程) M 操作一个命令对应多个键值对,而Pipeline 是多条命令 pipeline注意事项 每次pipeline携带数量不推荐过大,否则会影响网络性能 pipeline每次只能作用在一个Redis节点上 pipeline-Jedis使用 Maven 依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0

    98220发布于 2019-06-02
  • 来自专栏码农沉思录

    Redis为什么变慢了?常见延迟问题定位与分析

    当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 如果确实使用到了Swap,要及时整理内存空间,释放出足够的内存供Redis使用,然后释放Redis的Swap,让Redis重新使用内存。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的? 之前我们就遇到这种问题,特点就是从某个时间点之后就开始变慢,并且一直持续。这时你需要检查一下机器的网卡流量,是否存在网卡流量被跑满的情况。

    1.4K20发布于 2020-09-04
  • 来自专栏ops技术分享

    redis入门(11

    Redis3.0 Redis3.0在2015年4月1日正式发布,截止到本书完成已经到3.0.7版本,相比于Redis2.8主要特性如下: Redis3.0最大的改动就是添加Redis的分布式实现Redis Cluster,填补了Redis官方没有分布式实现的空白。 Redis Cluster经历了4年才正式发布也是有原因的,具体可以参考Redis Cluster的开发日志 1) Redis Cluster: Redis的官方分布式实现。 9) Redis日志小做调整:日志中会反应当前实例的角色(master或者slave)。 10) incr命令性能提升。

    47300发布于 2021-05-18
  • 来自专栏兜兜毛毛

    Redis 集群(11

    1、性能 Redis本身的QPS已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的Redis服务来完成工作。 2、扩展 第二个是出于存储的考虑。 /redis-server --slaveof 192.168.1.100 6379 或在客户端直接执行slaveofxxxx,使该Redis实例成为从节点。 它是一个特殊状态的redis实例。 我们会启动一个或者多个Sentinel的服务(通过src/redis-sentinel),它本质上只是一个运行在特殊模式之下的Redis,Sentinel通过info命令得到被监听Redis机器的master Redis虚拟槽分区 Redis既没有用哈希取模,也没有用一致性哈希,而是用虚拟槽来实现的。 Redis创建了16384个槽(slot),每个节点负责一定区间的slot。

    81320发布于 2020-03-19
  • 来自专栏技术杂记

    Redis 复制11

    ,以顺利进行连接设置密码到配置文件跟复制和只读设置一样,运行时的配置在重启后将丢失,要想重启后依然生效,得修改配置文件master side[root@m1 ~]# grep requirepass redis.conf "requirepass" configurationrequirepass 123456[root@m1 ~]# slave side[root@m2 tmp]# grep masterauth redis.conf

    34030编辑于 2022-07-10
  • 来自专栏小许code

    感觉Redis变慢了,这些可能的原因你查了没 ?(下)

    前言Redis变慢排查的上一篇,我们是基于Redis命令为入口,比如命令使用不得当,bigkey问题,以及集中过期问题来看现象和如何进行优化处理的,认真读过的同学想必大家对这些现象和处理方式有了比较深的印象 方案没有最完美的,everysec同步机制同样存在导致Redis延迟变慢的情况。AOF耗时的刷盘操作不是已经创建了一个后台线程去处理吗,怎么还会影响Redis主进程呢? fsync 完成后,主线程执行 write 才能成功返回也就是说压力到了磁盘IO这边,因此磁盘IO压力过大,同样可能导致Redis主进程阻塞,主进程阻塞了,自然处理用户命令变慢了排查方式:1:info fork()子进程可能导致Redis变慢的原因了我们可以通过命令去查看延迟大小//执行 INFO 命令,查看 latest_fork_usec ,时间微秒latest_fork_usec:15699内存管理碎片化过大什么是内存碎片 ,这里也不做深入说明,我也没具体深入了解过了总结到这里,关于影响Redis性能的因素下篇就分享完了相信如果能耐心地看到这里的同学,想必你肯定已经对 Redis变慢该如何处理有了很大的收获,同样对Redis

    1.6K62编辑于 2023-10-30
  • 来自专栏全栈程序员必看

    Redis11、集群(Cluster)

    1、存在的问题 单台redis容量限制,如何进行扩容?继续加内存、加硬件么? 单台redis并发写量太大有性能瓶颈,如何解决? redis3.0中提供了集群可以解决这些问题。 2、什么是集群 redis集群是对redis的水平扩容,即启动N个redis节点,将整个数据分布存储在这个N个节点中,每个节点存储总数据的1/N。 /opt/cluster/ 3.3、将redis.conf复制到cluster目录 redis.conf 是redis默认配置文件 cp /opt/redis-6.2.1/redis.conf /redis-6379.conf redis-server /opt/cluster/redis-6380.conf redis-server /opt/cluster/redis-6381.conf redis-server /opt/cluster/redis-6389.conf redis-server /opt/cluster/redis-6390.conf redis-server /opt

    1K20编辑于 2022-11-18
  • 来自专栏CSDNToQQCode

    springboot11redis

    springboot11redis 前言 redis可以说是现在最火的非关系型数据库,主要是它处理数据的能力是真的很强。就说win环境的处理能力一般的机器也能在每秒3万次以上,已经很厉害了。 中) 3、编写配置文件【com.item.redis】 4、操作提示 5、RedisBase编码(只包含字符串处理) 6、创建测试接口【com.item.controller】内 7、编写redis层级 数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=localhost # Redis服务器连接端口 spring.redis.port =6379 # Redis服务器连接密码(默认为空) spring.redis.password= #连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active =8 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 连接池中的最大空闲连接 spring.redis.pool.max-idle

    33330编辑于 2022-11-30
  • 来自专栏Hank’s Blog

    11.redis_python

    # pip install redis import redis # 1.链接数据库 key--value client = redis.StrictRedis(host='127.0.0.1',

    28420发布于 2020-09-17
领券