Redis异常记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis异常记录相关的知识,希望对你有一定的参考价值。

参考技术A

如果redis出现无法持久化,连接重置无法获取连接, 读取超时,无法分配内存等, 可按照以下的一些线索来进行排查;原因可能是value过大, key数量过多或长度不合理, 触发redis慢操作的指令很多,内存不够等等

MISCONF Redis is Configured to save RDB snapshots, but is currently not able to persist ondisk.Commands that may modify the data set are disable.Please Check redis logs for detail about the error

cannot allocate meomory

could not get a resource from the pool

JedisConnectionException:java.net.SocketTimeoutException: Read Time out

Reading from client: Connection reset by peer
Error writing to client: Connection reset by peer

参考
Redis info cpu 几个字段意义与参考价值
官方INFO介绍
美团在Redis上踩过的一些坑-3.redis内存占用飙升
client list 详解

Redis性能问题排查解决手册

使用 Redis 的 slowlog get [n] 慢查询日志彻底解决生产问题!

记录一次redis事故

公司在搞一次活动时,服务器一个应用服务出现异常,结果导致前端不断请求最终导致请求量过大,资源耗尽。

追踪原因:

1、调出应用日志,发现这个请求为获取微信信息的接口,微信的access_token过期了导致微信拒绝服务

2、猜测是微信token创建接口被多个服务重复刷新导致access_token过期,由于存储在redis中,查看信息发现居然还有9个多小时有效期,实际上所有程序中写的都是2个小时,迷惑

3、调出access_token创建日志,发现是6月18号创建的(当前时间),实际上是17号创建的,询问运维人员说是为测试另一个项目将服务器时间往后推了24小时,gg。。。

4、经查询资料得知,redis过期策略是预先算出过期的时间戳,然后中间不断将当前时间与该时间戳比较。17号5:40创建了access_token,过期时间点应该是7:40,但服务器时间改动导致时间戳是18号7:40,后来服务器又恢复了正常时间,最终导致过期时间被延长了24小时

 

原因总结:

服务器时间不能乱改,懂得redis原理很重要!!!!!!

 

意外教训:开始不知道服务器时间改了,在查看logback日志时发现时间记录上面的居然比下面的还新,同一个日志文件上面是18号的日志,下面居然变成了17号,一度以为是logback出了bug,或者异步写入导致的。经同事提醒才询问运维人员是否改了服务器时间,

知识全面才不会意外背锅(一度被别人怀疑我的代码出了问题,悲戚)。

以上是关于Redis异常记录的主要内容,如果未能解决你的问题,请参考以下文章

记录一次生产环境中Redis内存增长异常排查全流程!

2021-12-15 redis单节点使用连接异常

2021-12-15 redis单节点使用连接异常

Mongo 服务重启异常问题记录

Redis记录-Redis介绍

记录一次redis事故