redis实战(9):Redis 高负载排查记录

钉钉收到同事反馈:突然大量用户反馈进入网页很慢,登录服务器一看,Redis调用时间严重超时。太可悲,高速的缓存反而变成了短板,由于数据一直没有返回,导致了请求响应变慢。


1 现象

  1. 前端页面响应慢
  2. 接口返回慢
  3. redis调用严重超时

2 排查

2.1 环境检查

  1. 服务器的 CPU 负载
  2. 内存
  3. 网络输入输出
  4. QPS
  5. 连接数

上面指标查看方式很多,linux命令行、外部软件(Grafana,zabbix)或者redis的info命令都可以查看,不具体演示


2.2 redis检查

  1. 通过 info commandstats 可以查看 Redis 命令统计信息

生产环境不方便截图,所以截图本地环境演示命令
在这里插入图片描述

命令结果含义如下:

cmdstat_XXX: calls=XXX,usec=XXX,usec_per_call=XXX
//cmdstat_XXX: xxx 命令
//calls: 调用次数
//usec: 耗费CPU时间
//usec_per_call:每个命令平均耗费CPU(单位为微秒)

  1. 通过 slowlog 命令查看慢命令

默认超过 10ms 就会被记录到日志,只会记录其命令执行的时间,不包含 IO 往返操作,也不记录单由网络延迟引起的响应慢

SLOWLOG GET或者 SLOWLOG GET number命令,前者打印所有 slow log ,最大长度取决于 slowlog-max-len 选项的值,而 SLOWLOG GET number 则只打印指定数量的日志。

xxxxx> slowlog get 10
 3) 1) (integer) 411           
    2) (integer) 1545386469     
    3) (integer) 232663          
    4) 1) "keys"              
       2) "test:*"

命令的结果含义

1=日志的唯一标识符
2=命令的执行时间点,以UNIX时间戳表示
3=查询命令执行时间,以微妙为单位
4=执行的命令,以数组的形式排列。完整的命令是 keys test:*

所以通过这些参数,基本可以确定,是突然有大量的keys *命令导致CPU负载升高,导致响应延迟

3 处理

  1. 禁用

禁用的具体做法是,修改服务器的配置文件redis.conf,在SECURITY这一项中,我们新增以下命令:

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
  1. 重命名
    修改服务器的配置文件redis.conf,在SECURITY这一项中,我们新增以下命令,重启服务器后,则需要用新命令来执行操作,否则服务器会报错 unknown command。
rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC81TbdkSmLAzRPmcarcR
rename-command FLUSHDB  qf69aZbLAX3cf3ednHM3SOlbpH71yEXLAX3cf3e
rename-command CONFIG   FRaqbC8wSA1XvpFVjCRGryWtIIZS2TRvpFVjCRG
rename-command KEYS     eIiGXix4A2DreBBsQwY6YHkidcDjoYA2DreBBsQ

修改配置文件
在这里插入图片描述

重启redis-server后

在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页