开发者社区> 问答> 正文

Redis变慢了排查步骤是什么?

Redis变慢了排查步骤是什么?

展开
收起
游客lmkkns5ck6auu 2022-10-11 20:12:18 4569 0
9 条回答
写回答
取消 提交回答
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    第一步:找出使用复杂度高的命令,Redis提供了慢日志命令的统计功能,查看有哪些命令在执行时延迟比较大。 第二步:存储大key 第三步:集中过期 第四步:实例内存达到上限

    2022-12-06 09:41:54
    赞同 展开评论 打赏
  • 网站:http://ixiancheng.cn/ 微信订阅号:小马哥学JAVA

    排查步骤: 1. 目前Redis的每分钟的读取与写入的次数多少? 目的:主要为了排查一下时读的慢了还是写的慢了,因为一般Redis的部署是一主多从的方式,主服务器进行写操作,从服务器进行读操作; 2. 查看一下Redis服务器内的目前缓存的个数是多少,如果超过阈值了可能会引起变慢。 目的:是为了排查一下是不是由于缓存过多导致的变慢,这个时候可以延长部分的缓存的时间; 3. 查看是否存在大量无用的缓存导致的缓存变慢,比如说一些非必要的缓存是可以去掉的。不是经常访问的资源,或者接口的缓存等等

    2022-11-21 16:07:15
    赞同 1 展开评论 打赏
  • 可能的变慢原因如下: - 使用复杂度过高的命令或一次查询全量数据; - 操作 bigkey; - 大量 key 集中过期; - Redis所用内存达到分配给Redis的 maxmemory; - 客户端使用短连接和 Redis 相连; - 当Redis 实例的数据量大时,无论是生成 RDB,还是 AOF 重写,都会导致 fork 耗时严重; - AOF 的写回策略为 always,导致每个操作都要同步刷回磁盘; - Redis 实例运行机器的内存不足,导致 swap 发生,Redis 需要到 swap 分区读取数据; - 进程绑定CPU,绑核 不合理; - Redis 实例运行机器上开启了透明内存大页机制; - 网卡压力过大。(网络IO压力大)。

    排查思路: - 查看慢查询日志指令: slowlog get(会显示超过预先设定阈值的一些指令,慢日志底层是队列有大小限制,满了会删除队列中最早的记录); - 使用–bigkeys -i 0.1指令:查找每种数据类型中最大的bigkey,需要扫描全库,会阻塞主线程,所以最好放到从库统计,或者用-i指令不连续执行统计操作。

    2022-11-07 08:04:12
    赞同 展开评论 打赏
    1. 首先查看日志,分析日志内容,尤其注意日志时间。

    2. 查看网络等通讯是否有异常。

    3. 查看是否所有操作都慢还是部分。

    2022-11-06 08:51:27
    赞同 展开评论 打赏
  • 图片.png

    查看慢日志

    Redis 提供了慢日志命令的统计功能,它记录了有哪些命令在执行时耗时比较久。 查看 Redis 慢日志之前,你需要设置慢日志的阈值。例如,设置慢日志的阈值为 5 毫秒,并且保留最近 500 条慢日志记录:

    # 命令执行耗时超过 5 毫秒,记录慢日志
    CONFIG SET slowlog-log-slower-than 5000
    # 只保留最近 500 条慢日志
    CONFIG SET slowlog-max-len 500
    

    具体原因

    1. 使用复杂度过高的命令 尽量不使用 O(N) 以上复杂度过高的命令,对于数据的聚合操作,放在客户端做 执行 O(N) 命令,保证 N 尽量的小(推荐 N <= 300),每次获取尽量少的数据,让 Redis 可以及时处理返回
    2. 操作bigkey(value很大) Redis 在写入数据时,需要为新的数据分配内存,相对应的,当从 Redis 中删除数据时,它会释放对应的内存空间。如果一个 key 写入的 value 非常大,那么 Redis 在分配内存时就会比较耗时。同样的,当删除这个 key 时,释放内存也会比较耗时,这种类型的 key 我们一般称之为 bigkey。此时,需要检查业务代码是否存在写入 bigkey 的情况。你需要评估写入一个 key 的数据大小,尽量避免一个 key 存入过大的数据。
    2022-11-05 10:49:38
    赞同 展开评论 打赏
  • 1.查看慢日志,看是否有复杂度过高的命令。 2.若你查询慢日志发现,并不是复杂度过高的命令导致的,而都是 SET / DEL 这种简单命令出现在慢日志中,那么你就要怀疑你的实例否写入了 bigkey。 3.如果你发现,平时在操作 Redis 时,并没有延迟很大的情况发生,但在某个时间点突然出现一波延时,其现象表现为:变慢的时间点很有规律,例如某个整点,或者每间隔多久就会发生一波延迟。     如果是出现这种情况,那么你需要排查一下,业务代码中是否存在设置大量 key 集中过期的情况。 4.为了保证 Redis 数据的安全性,我们可能会开启后台定时 RDB 和 AOF rewrite 功能。     如果你发现操作 Redis 延迟变大,都发生在 Redis 后台 RDB 和 AOF rewrite 期间,那你就需要排查,在这期间有可能导致变慢的情况。 5.如果你的 Redis 实例设置了内存上限 maxmemory,那么也有可能导致 Redis 变慢。     当我们把 Redis 当做纯缓存使用时,通常会给这个实例设置一个内存上限 maxmemory,然后设置一个数据淘汰策略。而当实例的内存达到了 maxmemory 后,你可能会发现,在此之后每次写入新数据,操作延迟变大了。 6.你的业务应用,应该使用长连接操作 Redis,避免频繁的短连接。频繁的短连接会导致 Redis 大量时间耗费在连接的建立和释放上,TCP 的三次握手和四次挥手同样也会增加访问延迟。 image.png

    2022-10-31 13:29:41
    赞同 1 展开评论 打赏
  • 码中自由一片天地。。。

    先查看是否是网络原因,然后查看日志是否有异常,查看磁盘存储信息

    2022-10-25 09:18:27
    赞同 展开评论 打赏
  • 一,确定Redis是否真的变慢了 进行redis基准测试,主要通过redis的命令来查看,redis-cli -h 127.0.0.1 -p 6379 查看redis的平均耗时 二,进行slowlog的日志查看 先设置日志的阈值

    # 命令执行耗时超过 5 毫秒,记录慢日志
    CONFIG SET slowlog-log-slower-than 5000
    # 只保留最近 500 条慢日志
    CONFIG SET slowlog-max-len 500
    

    会记录redis的慢日志

    2022-10-24 14:51:01
    赞同 1 展开评论 打赏
  • 亚马逊云科技合作伙伴解决方案架构师,亚马逊云科技User Group Leader,多年云计算经验,csdn/阿里云等平台优质作者,亚马逊云科技社区建设者,亚马逊云科技培训与认证云领袖合作作者,专注于云计算、云原生领域。

    首先查看redis的日志,其次查看redis的存储状况和网络情况

    2022-10-24 12:58:36
    赞同 展开评论 打赏
滑动查看更多
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载