1.业务服务器到 Redis 服务器之间的网络存在问题,例如网络线路质量不佳,网络数据包在传输时存在延迟、丢包等情况
2.Redis 本身存在问题,需要进一步排查是什么原因导致 Redis 变慢
原因1:使用复杂度过高的命令
查看慢日志,看是否有复杂度过高的命令。
原因2:操作bigkey(value很大)
若你查询慢日志发现,并不是复杂度过高的命令导致的,而都是 SET / DEL 这种简单命令出现在慢日志中,那么你就要怀疑你的实例否写入了 bigkey。
原因3:集中过期
如果你发现,平时在操作 Redis 时,并没有延迟很大的情况发生,但在某个时间点突然出现一波延时,其现象表现为:变慢的时间点很有规律,例如某个整点,或者每间隔多久就会发生一波延迟。
如果是出现这种情况,那么你需要排查一下,业务代码中是否存在设置大量 key 集中过期的情况。
原因4:开启AOF
原因5:fork耗时严重
为了保证 Redis 数据的安全性,我们可能会开启后台定时 RDB 和 AOF rewrite 功能。
如果你发现操作 Redis 延迟变大,都发生在 Redis 后台 RDB 和 AOF rewrite 期间,那你就需要排查,在这期间有可能导致变慢的情况。
原因6:碎片整理
Redis变慢原因(系统相关)
原因1:实例内存达到上限
淘汰策略执行占用时间,淘汰策略改为随机淘汰,随机淘汰比 LRU 要快很多(视业务情况调整)
网友评论