资讯专栏INFORMATION COLUMN

Redis内存告警处理

IT那活儿 / 3452人阅读
Redis内存告警处理

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!! 

1

关于Redis的bigkey,阿里Redis开发规范中有说明:拒绝bigkey,防止网卡流量、慢查询,string类型控制在10KB之内,hash、list、set、zset元素个数不要超过5000。
今天我们来看一个反例,一个异常情况下包含千万数量级个元素的list。

2

某时某分某值班人员收到告警传报,指向某业务redis实例内存使用量告警。
登录智慧运维管理平台,查看该redis实例使用内存情况,使用内存9.95GB超过阈值。
查看该redis实例使用内存基线数据,正常范围在0.67—2.77GB之间,远低于当前内存使用量9.95GB。
登录redis主机,检查bigkey返回结果,命令如下:
redis-cli -h  -p  --bigkeys
主要检查summary部分的信息,发现该实例一共有3864814个key,其中list类型有1个key,该key有23322701个元素。
反馈开发商确认该list为重复投递产生的垃圾数据,申请授权临时UNLINK删除处理后恢复正常,目前已更新应用程序版本,控制该list元素数量避免bigkey以彻底解决。

3

到这里展示了一个bigkey从发现到处理的案例,接下来我们来看看bigkey到底能给redis带来什么危害。
bigkey顾名思义就是value占用内存空间大或者元素多的key。
3.1 在Redis中存在两种类型,字符串类型最大512MB,非字符串类型(例如bash、list、set、zset等)可以存储大约40亿(2^32-1)个元素,但实际上如果满足下面任一情况都可以认为是bigkey:
  • 字符串类型,一般认为单个key的value值长度超过10KB就是bigkey;

  • 非字符串/集合类型,单个key的元素个数超过5000就是bigkey;

上述的定义并不绝对,主要是根据自己的业务场景调整具体的标准。
3.2 bigkey在redis中存在诸多隐患,有如下几点:
  • 超时阻塞:因为Redis单线程执行命令的特性,操作bigkey等耗时的操作,都可能阻塞Redis其他业务操作,造成慢查询等性能问题;

  • 网络拥塞:读取bigkey意味着需要消耗更多的网络流量占用更多的网络带宽,可能造成网络拥塞,自身变慢的同时影响到其他业务性能;

  • 过期删除:bigkey相关的删除或自动过期时在低版本中容易产生阻塞,主库较长时间的阻塞可能引发主备同步中断或主备切换;

  • 迁移困难:bigkey迁移可能会失败而且容易阻塞redis;

  • 内存空间不均匀:集群架构下某个数据分片的内存使用率远超其它数据分片,无法使数据分片的内存资源达到均衡,不利于集群对内存空间的统一管理;

  • 内存空间资源紧张redis内存不断变大引发OOM,或达到maxmemory设置值引发写阻塞或核心key被驱逐

3.3 如何发现redis中的bigkey,有以下几种方法:
  • redis-cli自带的命令,redis-cli -h -p --bigkeys,该命令以遍历的方式分析redis实例中的所有key,并返回整体统计信息和每钟数据类型中最大的key,并不能找出整个redis中所有的大key;

  • 通过redis-rdb-tools工具包中的rdb工具分析redis的dump.rdb文件生成csv文件再导入到mysql、Oracle等数据库中进行统计分析,该工具是离线分析rdb持久化文件对性能无影响;

  • 某些公有云的可视化页面分析工具,如阿里云redis大key搜索工具等。

因此不管对于redis的开发还是运维人员,bigkey就是一个不稳定因素,时不时带来稳定性风险,使用redis过程中都应该经常关注数据中是否有bigkey,及早发现并处理,避免对业务系统的进一步危害。

END



本文作者:崔京梦

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129481.html

相关文章

  • 内存 监控告警 UMem Redis

    摘要:监控告警控制台监控告警管理云内存为用户提供多种类型的监控,包括如使用量连接数数量等多种监控,并可设置监控告警。云内存提供默认告警模板的同时,资源监控模板界面支持用户创建告警模板并自定义设置告警监控项。监控告警控制台监控告警管理云内存Redis为用户提供多种类型的监控,包括如使用量、连接数、QPS、 Key数量等多种监控,并可设置监控告警。云内存Redis提供默认告警模板的同时,资源监控模板界...

    ernest.wang 评论0 收藏2041
  • 实例管理 云内存 UMem Redis

    摘要:实例管理实例管理实例管理新建实例完成后,可以在控制台上管理实例,如扩容续费及监控告警等实例管理操作。对于缩容,整个过程中对无任何影响。运维时间运维时间主备产品提供运维时间窗口设置,用户可以根据自身业务选择时间段来做重写。 实例管理新建实例完成后,可以在控制台上管理Redis实例,如:扩容、续费及监控告警等实例管理操作。主备版Redis控制台支持创建从库、配置升降级、设置密码、重启、慢查询分析...

    ernest.wang 评论0 收藏723
  • AIOps在携程的践行

    摘要:随着人工智能时代的到来,携程生产环境运维进入了新的运维时代。本文选取了几种典型的运维场景对在携程的践行展开了介绍,首先让我们从概念认识下。针对应用异常指标检测这种场景,抽取一定的样本统计,在基于专家经验标注下的准确率可达到以上,召回率接近。 作者简介徐新龙,携程技术保障中心应用管理团队高级工程师,负责多个AIOps项目的设计与研发。信号处理专业硕士毕业,对人工智能、机器学习、神经网络及数学有...

    MingjunYang 评论0 收藏0
  • 『九个月实现破亿用户的可扩展架构』学习笔记

    摘要:五技术栈整个看下来会发现美拍的架构做的非常的稳,小军也有提到,在项目初期高速发展阶段做架构时要克服对完美架构的欲望克服对新技术的欲望,先让系统跑起来。 昨晚把美拍架构负责人洪小军在Qcon上的『九个月实现破亿用户的可扩展架构』分享看了一遍(其实那场QCon我也在现场,但是当时小军这个会场实在太多人了,而且当时北京还没开空调又热又闷,所以我就挑了个凉快的会场去听了哈哈),感觉有不少值得学...

    TesterHome 评论0 收藏0
  • vivo统一告警平台设计与实践

    摘要:告警当一个问题通过告警系统将消息以短信电话邮件等方式告知给用户时,我们称之为一条告警。图统一告警系统结构图告警收敛对于告警平台每天会产生数以万计的告警,这些告警对于运维或开发人员都需要去分析甄别优先级并处理故障。 一、背景一套监控系统检测和告警是密不可分的,检测用来发现异常,告警用来将问题信息发送给相应的人。v...

    Rocko 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<