第一步:找出使用复杂度高的命令,Redis提供了慢日志命令的统计功能,查看有哪些命令在执行时延迟比较大。 第二步:存储大key 第三步:集中过期 第四步:实例内存达到上限
排查步骤: 1. 目前Redis的每分钟的读取与写入的次数多少? 目的:主要为了排查一下时读的慢了还是写的慢了,因为一般Redis的部署是一主多从的方式,主服务器进行写操作,从服务器进行读操作; 2. 查看一下Redis服务器内的目前缓存的个数是多少,如果超过阈值了可能会引起变慢。 目的:是为了排查一下是不是由于缓存过多导致的变慢,这个时候可以延长部分的缓存的时间; 3. 查看是否存在大量无用的缓存导致的缓存变慢,比如说一些非必要的缓存是可以去掉的。不是经常访问的资源,或者接口的缓存等等
可能的变慢原因如下: - 使用复杂度过高的命令或一次查询全量数据; - 操作 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指令不连续执行统计操作。
Redis 提供了慢日志命令的统计功能,它记录了有哪些命令在执行时耗时比较久。 查看 Redis 慢日志之前,你需要设置慢日志的阈值。例如,设置慢日志的阈值为 5 毫秒,并且保留最近 500 条慢日志记录:
# 命令执行耗时超过 5 毫秒,记录慢日志
CONFIG SET slowlog-log-slower-than 5000
# 只保留最近 500 条慢日志
CONFIG SET slowlog-max-len 500
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 的三次握手和四次挥手同样也会增加访问延迟。
一,确定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的慢日志
首先查看redis的日志,其次查看redis的存储状况和网络情况
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。