首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏DBA随笔

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

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

    1.1K30发布于 2021-08-05
  • 来自专栏烹饪一朵云

    窥探redis为何会变慢

    那么问题来了,redis速度快的flag是直接写官网的公屏上,那我们不妨来推演一下,redis变慢的原因,知其然而知其所以然。 问题1:redis真的只是单进程单线程吗? 问题2redis数据结构真的简单吗? redis为何会变慢 随着时间的堆积,数据的累增,系统很直观的会感觉的变慢的现象,对于大型程序来说,主要是内存碎片啊、堆栈溢出啊等等这些关于垃圾回收机制导致的,另外的还是跟其他组件在配合中,网络开销导致的现象 找到你认为可能变慢Redis 实例,测试这个实例的基准性能 如果你观察到,这个实例的运行延迟是正常 Redis 基准性能的 2 倍以上,即可认为这个 Redis 实例确实变慢了 发现问题 业务服务器到 Redis 服务器之间的网络存在问题,例如网络线路质量不佳,网络数据包在传输时存在延迟、丢包等情况 Redis 本身存在问题,需要进一步排查是什么原因导致 Redis 变慢 分析问题 分析问题的三把斧

    85210发布于 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 为什么变慢了?

     "user_list_2000"       3) "0"       4) "-1" 2) 1) (integer) 32692    2) (integer) 1593763337    3) ( integer) 5044    4) 1) "GET"       2) "book_price_1000" ... 当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的?

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

    Redis变慢了,你会怎么排查

    "user_list_2000" 3) "0" 4) "-1" 2) 1) (integer) 32692 2) (integer) 1593763337 3) ( integer) 5044 4) 1) "GET" 2) "book_price_1000" ... 当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的?

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

    你的 Redis 为什么变慢了?

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

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

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

    对于第一点从应用到Redis这条链路变慢的原因可能有如下两个:应用到Redis服务之间的链路出现问题了,比如Redis所在服务器网络负载过高丢包、交换机问题、Proxy变慢等;Redis本身确实因为一些原因变慢了 服务器配置比较低时延迟为 10ms 时,才认为 Redis响应变慢了,但是如果配置比较高,那么可能延迟是 1ms 时就可以认为 Redis 变慢了。 in 1.02 seconds 500 parallel clients 3 bytes payload keep alive: 10.00% <= 1 milliseconds0.05% <= 2 in 1.02 seconds 500 parallel clients 3 bytes payload keep alive: 10.00% <= 1 milliseconds0.05% <= 2 ,就可以认为这个 Redis 服务确实响应变慢了如果确认是 Redis服务变慢了,那如何排查是哪里发生了问题呢?

    1K30编辑于 2022-09-19
  • 面试题:Redis服务为何突然变慢

    大家都是知道Redis纯内存数据库,处理速度很快,CPU架构,也会影响到 Redis 的性能 本文主要解决的一个问题在 Redis 为什么变慢,如何解决的? 大家都说它快,什么情况变慢 Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右 Redis 事件循环基于 epoll/kqueue, 具有相当强的可扩展性。 Redis 已在超过 60,000 个连接的情况下进行了基准测试, 并且仍然能够维持 50,000 q/s 的吞吐量。 怎么会变慢呢? 一、确定Redis是否真的变慢了 1. 运行时延迟是其基线性能的 2 倍及以上,就可以认定 Redis 变慢2. 二、解决办法: Redis6.0 如何通过配置支持 多核绑定 线程类型 配置 功能描述 CPU 绑定核心 主线程 server_cpulist 0-7:2 事件循环,处理客户端连接和命令调度 0, 2,

    37300编辑于 2025-04-26
  • 来自专栏后端架构师

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

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

    97450编辑于 2022-04-08
  • 来自专栏DBA随笔

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

    00、Redis变慢了,到底慢在哪儿? 最近由于工作需要,在维护线上的RedisRedis相关的原理部分看的比较多,Redis最常见的业务问题就是响应慢,今天我们来看看Redis慢在哪里? 首先来看有可能引起Redis变慢的那些情况。其实,Redis变慢的主要因素是各种类型的阻塞,可以这么说:阻塞是Redis的噩梦。 总体上来说,Redis的阻塞存在很多可能,今天重点说以下2个方面: 1、Redis内部的阻塞式操作或者命令 2、CPU核心以及NUMA架构 01、Redis内部的阻塞式操作或命令 假设你的Redis ,这个操作本身会阻塞当前的应用,如果释放的key占用内存较多,例如是一个bigKey,那么大概率会影响Redis的性能 清空数据库的命令flushall和flushdb也存在类似的阻塞风险 2、AOF落盘时候产生阻塞 1、跨Socket的访问 如果一个Redis服务部署在这样的服务器上,它有可能在Socket1和Socket2之间来回切换,假设一个Redis应用现在Socket1上运行了一段时间,那么它的数据会保存在

    1.2K20发布于 2021-08-05
  • 来自专栏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
  • 来自专栏码农沉思录

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

    "user_list_2000" 3) "0" 4) "-1"2) 1) (integer) 32692 2) (integer) 1593763337 3) (integer ) 5044 4) 1) "GET" 2) "book_price_1000"... 当实例的内存达到了maxmemory后,你会发现之后的每次写入新的数据,有可能变慢了。 导致变慢的原因是,当Redis内存达到maxmemory后,每次写入新的数据之前,必须先踢出一部分数据,让内存维持在maxmemory之下。 网卡负载过高 如果以上产生性能问题的场景,你都规避掉了,而且Redis也稳定运行了很长时间,但在某个时间点之后开始,访问Redis开始变慢了,而且一直持续到现在,这种情况是什么原因导致的?

    1.4K20发布于 2020-09-04
  • 来自专栏小许code

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

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

    1.6K62编辑于 2023-10-30
  • 来自专栏小许code

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

    今天就可能引起Redis变慢的原因一一分析,上篇看完后你将会形成一个比较完整的排查思路方案!Redis真的变慢了吗? 因此需要确定是不是访问Redis服务变慢进而拖慢了整个服务的响应变慢,那就是先自查! 那该以什么标准来认定Redis变慢呢? 一般来说,如果你观察到的 Redis 运行时延迟是其基线性能的 2 倍及以上,就可以认定 Redis 变慢了比如:执行以下命令,就可以测试出这个实例 60 秒内的最大响应延迟[root@VM-12-10 ok,关于Redis变慢问题的上半部分就分享到这里了,下期讲继续更新其他可能导致Redis变慢的情况,朋友,点个关注不迷路!参考:Redis变慢

    1.7K20编辑于 2023-10-23
  • 来自专栏学习之路

    Redis#2】初识 Redis

    Redis 最显著的特点是: 高性能 支持多种数据结构 持久化能力 分布式特性(主从复制、哨兵模式、集群) 丰富的客户端支持(几乎支持所有主流编程语言) 2. 示例:SET name "Tom"、GET name 2)Hash(哈希):存储对象,类似 Map。 9)Streams(流):Redis 5.0 引入的消息队列结构,支持消息持久化和消费者组。 2. Redis 能够存储的数据是有限的(内存空间有限),这就意味着如果有太多的数据是不能放在一个 Redis 当中的,因此就有了集群的概念,操作方式:可以引入多个主机,部署多个 Redis 节点,每个 Redis 这样的内存级别的数据库来帮助完成 当然,使用这样的内存数据库,存储大量的数据,需要不少的 硬件资源 的 注意:Redis 当中存储的是全量数据,这里的数据是不可以进丢弃的 2.

    33800编辑于 2025-06-10
  • 来自专栏Java项目实战

    为什么Netty变慢了?

    体验过众多Netty的demo以后,在跟朋友分享后实现了页面昵称输入,消息可回车发送,页面保持输入框在底部,消息页面支持滚动,但是为什么当多客户端接入,消息会延迟,并注册变慢呢? 2 而Nio是如何做的呢? 为什么会变慢呢? UserInfoManager.java:124, broadCastPing userCount: 2个用户 但是当服务器接收多个客户端消息会出现延迟 ? 1核啊,不管是cpu密集型,还是io密集型4个线程就够服务器响应的了,而且每个客户端为了保持长连接,还不会断开,所以当客户端多了,消息多了以后就会变慢,这严重违背了Nio的思想。

    2.2K10发布于 2020-01-17
  • 来自专栏码海

    Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文

    从你的业务服务到 Redis 这条链路变慢的原因可能也有 2 个: 业务服务器到 Redis 服务器之间的网络存在问题,例如网络线路质量不佳,网络数据包在传输时存在延迟、丢包等情况 Redis 本身存在问题 也就是从 Redis 角度来排查,是否存在导致变慢的场景,以及都有哪些因素会导致 Redis 的延迟增加,然后针对性地进行优化。 排除网络原因,如何确认你的 Redis 是否真的变慢了? 例如,我的机器配置比较低,当延迟为 2ms 时,我就认为 Redis 变慢了,但是如果你的硬件配置比较高,那么在你的运行环境下,可能延迟是 0.5ms 时就可以认为 Redis 变慢了。 如果你观察到,这个实例的运行延迟是正常 Redis 基准性能的 2 倍以上,即可认为这个 Redis 实例确实变慢了 确认是 Redis 变慢了,那如何排查是哪里发生了问题呢? 2) 运维监控 前面我也提到了,要想提前预知 Redis 变慢的情况发生,必不可少的就是做好完善的监控。

    1.8K32发布于 2021-01-28
  • 来自专栏IT技术精选文摘

    Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文

    Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右。但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符。 你也许或多或少地,也遇到过以下这些场景: 在 Redis 上执行同样的命令,为什么有时响应很快,有时却很慢? 为什么 Redis 执行 SET、DEL 命令耗时也很久? 为什么我的 Redis 突然慢了一波,之后又恢复正常了? 为什么我的 Redis 稳定运行了很久,突然从某个时间点开始变慢了? ... 如果你也遇到了以上情况,那么,这篇文章将会给你一个「全面」的问题排查思路,并且针对这些导致变慢的场景,我还会给你一个高效的解决方案。 在正文开始之前,我需要提醒你的是,这篇文章很长,涵盖的 Redis 知识点也非常广,全篇文章接近 2W 字,如果此时你的阅读环境不适合专注阅读,我建议你先收藏此文章,然后在合适的时间专注阅读这篇文章。

    91431编辑于 2022-04-08
  • 来自专栏ops技术分享

    redis入门(2

    二.原理 redis命令结构 image.png 1.客户端发送命令后,Redis服务器将为这个客户端链接创造一个’输入缓存’,将命令放到里面。 2.再由Redis服务器进行分配挨个执行,顺序是随机的,这将不会产生并发冲突问题,也就不需要事物了。 如果数据是写入命令,例如set name:1 zhangsan方式添加一个字符串Redis将根据策略,将这对key:value来用内部编码格式存储。

    34600发布于 2021-05-18
  • 来自专栏技术杂记

    Redis 复制2

    增量同步从 Redis 2.8 开始, 在网络连接短暂性失效之后, 主从服务器可以尝试继续执行原有的复制进程(process), 而不一定要执行完整重同步操作。 Redis 2.8 的这个部分重同步特性会用到一个新增的 PSYNC 内部命令, 而 Redis 2.8 以前的旧版本只有 SYNC 命令, 不过, 只要从服务器是 Redis 2.8 或以上的版本, 它就会根据主服务器的版本来决定到底是使用 PSYNC 还是 SYNC :如果主服务器是 Redis 2.8 或以上版本,那么从服务器使用 PSYNC 命令来进行同步。 如果主服务器是 Redis 2.8 之前的版本,那么从服务器使用 SYNC 命令来进行同步。

    31220编辑于 2022-07-09
领券