线上排查|线上Redis负载暴涨100%,业务中断,这样排查很赞!

来源:QQ快报
责任编辑:李志喜
字体:

HI! 我是小小,今天是本周的第六篇,本篇将会着重讲解关于Redis负载的问题。

网页监控

通过阿里的Grafana监控,发现服务器的CPU负载,内存,网络输入输出相当正常,所以Redis出现问题。使用单节点的32M 16GB的阿里云Redis,登录网页,查看性能监控,发现CPU使用飙升到100%;

QPS从1000升高到6000,但是远远低于极限值,连接数量从0升高到3000,也就是远远低于极限值。临时方案:先短期租用一台Redis,临时更换Redis配置,重启应用。尽快排查

服务器命令监控

登录Redis-cli,通过info命令查看服务器状态和命令统计,总结异常点:

查询Reduis慢指令slowlog,以及keys_并且耗费时间严重,在当前业务下执行keys_会导致阻塞业务,导致查询国漫,cpu过稿。

查看redis指令执行情况,排除exec,flushall指令,业务使用指令过程中耗时严重的有setnx有7.5千万次调用平均耗时6s,setex有8.4万次调用平均耗时7.33s,del有2.6亿吃调研耗时69s,hegtall有14亿次调用耗时20s,keys有2千万次调用平均耗时 3740s。通常而言,这些指令耗时与 value 大小呈正比,所以可以排查这些指令相关的数据近期有没有较大增长。或者近期有没有业务改造,会频繁使用上述指令,也会造成 cpu 高。

通过 info commandstats 可以查看 Redis 命令统计信息,其中命令格式是

调用次数、耗费CPU时间、每个命令平均耗费CPU(单位为微秒)

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

图中各字段表示的是:

1=日志的唯一标识符

2=命令的执行时间点,以UNIX时间戳表示

3=查询命令执行时间,以微妙为单位,中的是230ms

4=执行的命令,以数组的形式排列。完整的命令是 keys mucury:*所以通过这些参数,基本可以确定,是突然有大量的keys *命令导致CPU负载升高,导致响应延迟,问题我们应用中没有开放keys *命令问题解决

关于作者

我是小小,双鱼座的程序猿,我么下期再见~bye

END

「 往期文章 」

声明:以上内容并不代表本网赞同其观点。如有任何问题,请与不良与违法信息举报中心联系:513175919@qq.com。

www.book1234.com true http://www.book1234.com/q/20210109/20210109A067DW00.html report 30655
娱乐时尚
  • java线上出了问题怎么排查
  • 测试服务器正常显示但线上服务器数据不显示应该怎...
  • 历史文化
    真视界
    旅游美食
    精彩图文
    我爱我车
    母婴健康
    关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
    Copyright © 2004-2018 book1234.com All Rights Reserved. 布客网 版权所有
    京ICP备10044368号-1 京公网安备11010802011102号