记录一次线上Redis宕机

SlowLog说明

Slowlog 是 Redis用来记录查询执行时间的日志系统。注意,这个查询执行时间指的是不包括像客户端响应(talking)、发送回复等IO操作,而单单是执行一个查询命令所耗费的时间。

slowlog 保存在内存里面,读写速度非常快,因此我们可以放心地使用它,不必担心因为开启slowlog 而损害 Redis 的速度。

slowlog 有两个重要的配置,我们先通过 CONFIG GET slowlog-* 命令来查看现有的配置。
127.0.0.1:6379> CONFIG GET slowlog-*

  1. “slowlog-log-slower-than”

  2. “100”

  3. “slowlog-max-len”

  4. “1024”

slowlog-log-slower-than代表慢查询的阈值,单位为:微秒。当执行查询命令消耗时间大于配置的阈值时,会将该条命令记录到慢查询日志。
当slowlog-log-slower-than=0时,记录所有命令。slowlog-log-slower-than<0时,不记录任何命令。
slowlog-log-slower-than 的默认值为 10000 (10毫秒,1秒 =1,000毫秒 = 1,000,000微秒)。

slowlog-max-len
代表慢查询日志最大条数。它是一个队列形式的存储结构,先进先出的队列,即当慢查询日志达到最大条数后,会销毁最早记录的日志条目。slowlog-max-len的默认值为 128,保存在内存内,所以重启 redis 会清空慢查询日志。

配置 slowlog-log-slower-thanslowlog-max-len 的命令非常简单,如下:

  1. CONFIG SET slowlog-log-slower-than 100

  2. CONFIG SET slowlog-max-len 1024

使用 SLOWLOG LEN 命令,查询当前的慢查询日志记录数。

1. 127.0.0.1:6379> `SLOWLOG LEN`

2. (integer) 2019

当我们只需要查询前几个慢查询记录时,可以使用 SLOWLOG GET [n] 命令。

127.0.0.1:6379> SLOWLOG GET 3

1)  
     1. (integer) 14         # 唯一性(unique)的日志标识符

     2. (integer) 1522808219 # 被记录命令的执行时间点,以 UNIX 时间戳格式表示

     3. (integer) 16         # 查询执行时间,以微秒为单位

     4. "keys"               # 执行的命令,以数组的形式排列

     5. "*"                  # 这里完整的命令是 "keys *"

2)  
     (integer) 13

     (integer) 1522808215

     (integer) 7

      a. "set"

      b. "name"

      c. "baicai"


3)  
      1) (integer) 12

      2) (integer) 1522808198

      3) (integer) 101

4)   
      1) "set"

      2) "age"

      3) "25"

SLOWLOG GET [n] 若不加 n ,则获取全部慢查询记录。

清空慢查询日志使用 SLOWLOG RESET。注意,slowlog-log-slower-than
不要设置过大,设置过大有可能一条记录也不会记录。

线上实际业务需求:

车辆从龙门架经过,被抓拍机抓拍车牌数据后推送到分流LED屏幕,根据车道管理配置规则分配分流车道号,该数据存放在redis缓存中,时效5分钟;
到安检车道安检后删除缓存中对应车辆数据。

该业务在车流量大时频繁读写相关key,因此在存放消息队列的方法内在进行redis读写操作时,为防止消息队列的数据隔离安全问题加了ReenTranLock,
但内部方法又涉及了其他的业务操作,并且其他的业务操作也去读取了redis相关数据;所以尽可能不涉及再操作其他的业务流程操作和方法体内再读写其他相关redis业务数据;
否则,可能造成redis慢查询;而在锁未释放时,线上其他业务也访问redis,redis连接池慢查询未释放资源,导致最终服务宕机不可用。

解决方式:
将相关业务代码抽离出来;ReidsQunene只进行单一的读写业务操作;

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2021 Wangts
  • 访问人数: | 浏览次数:

加个好友呗~

微信