Redis监控技巧总结

Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Redis 系统的状态报告。

redis-cli info

内存使用

如果 Redis 使用的内存超出了可用的物理内存大小,那么 Redis 很可能系统会被OOM Killer杀掉。针对这一点,你可以通过 info 命令对used_memory和used_memory_peak进行监控,为使用内存量设定阀值,并设定相应的报警机制。当然,报警只是手段,重要的是你得预先计划好,当内存使用量过大后,你应该做些什么,是清除一些没用的冷数据,还是把 Redis 迁移到更强大的机器上去。

持久化

如果因为你的机器或 Redis 本身的问题导致 Redis 崩溃了,那么你唯一的救命稻草可能就是 dump 出来的 rdb文件了,所以,对 Redis dump 文件进行监控也是很重要的。你可以通过对rdb_last_save_time进行监控,了解你最近一次 dump 数据操作的时间,还可以通过对rdb_changes_since_last_save进行监控来知识如果这时候出现故障,你会丢失多少数据。

主从复制

如果你设置了主从复制模式,那么你最好对复制的情况是否正常做一些监控,主要是对 info 输出中的master_link_status进行监控,如果这个值是 up,那么说明同步正常,如果是 down,那么你就要注意一下输出的其它一些诊断信息了。比如下面这些:

复制代码

代码如下:

role:slave
master_host:192.168.1.128
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1356900595

Fork 性能

当 Redis 持久化数据到磁盘上时,它会进行一次 fork 操作,通过 fork 对内存的 copy on write 机制最廉价的实现内存镜像。但是虽然内存是 copy on write 的,但是虚拟内存表是在 fork 的瞬间就需要分配,所以 fork 会造成主线程短时间的卡顿(停止所有读写操作),这个卡顿时间和当前 Redis 的内存使用量有关。通常 GB 量级的 Redis 进行 fork 操作的时间在毫秒级。你可以通过对 info 输出的latest_fork_usec进行监控来了解最近一次 fork 操作导致了多少时间的卡顿。

配置一致

Redis 支持使用 CONFIG SET操作来实现运行实的配置修改,这很方便,但同时也会导致一个问题。就是通过这个命令动态修改的配置,是不会同步到你的配置文件中去的。所以当你因为某些原因重启 Redis 时,你使用 CONFIG SET 做的配置修改就会丢失掉,所以我们最好保证在每次使用 CONFIG SET 修改配置时,也把配置文件一起相应地改掉。为了防止人为的失误,所以我们最好对配置进行监控,使用CONFIG GET命令来获取当前运行时的配置,并与 redis.conf 中的配置值进行对比,如果发现两边对不上,就启动报警。

慢日志

Redis 提供了SLOWLOG指令来获取最近的慢日志,Redis 的慢日志是直接存在内存中的,所以它的慢日志开销并不大,在实际应用中,我们通过 crontab 任务执行 SLOWLOG 命令来获取慢日志,然后将慢日志存到文件中,并用Kibana生成实时的性能图表来实现性能监控。

值得一提的是,Redis 的慢日志记录的时间,仅仅包括 Redis 自身对一条命令的执行时间,不包括 IO 的时间,比如接收客户端数据和发送客户端数据这些时间。另外,Redis 的慢日志和其它数据库的慢日志有一点不同,其它数据库偶尔出现 100ms 的慢日志可能都比较正常,因为一般数据库都是多线程并发执行,某个线程执行某个命令的性能可能并不能代表整体性能,但是对 Redis 来说,它是单线程的,一旦出现慢日志,可能就需要马上得到重视,最好去查一下具体是什么原因了。

监控服务

-Sentinel
Sentinel是 Redis 自带的工具,它可以对 Redis 主从复制进行监控,并实现主挂掉之后的自动故障转移。在转移的过程中,它还可以被配置去执行一个用户自定义的脚本,在脚本中我们就能够实现报警通知等功能。

-Redis Live
Redis Live是一个更通用的 Redis 监控方案,它的原理是定时在 Redis 上执行MONITOR命令,来获取当前 Redis 当前正在执行的命令,并通过统计分析,生成web页面的可视化分析报表。

-Redis Faina
Redis Faina是由著名的图片分享应用 instagram 开发的 Redis 监控服务,其原理和 Redis Live 类似,都是对通过MONITOR来做的。

数据分布

弄清 Redis 中数据存储分布是一件很难的是,比如你想知道哪类型的 key 值占用内存最多。下面是一些工具,可以帮助你对 Redis 的数据集进行分析。

-Redis-sampler
Redis-sampler是 Redis 作者开发的工具,它通过采用的方法,能够让你了解到当前 Redis 中的数据的大致类型,数据及分布状况。

-Redis-audit
Redis-audit是一个脚本,通过它,我们可以知道每一类 key 对内存的使用量。它可以提供的数据有:某一类 key 值的访问频率如何,有多少值设置了过期时间,某一类 key 值使用内存的大小,这很方便让我们能排查哪些 key 不常用或者压根不用。

-Redis-rdb-tools
Redis-rdb-tools跟 Redis-audit 功能类似,不同的是它是通过对 rdb 文件进行分析来取得统计数据的。

原文链接:Redis Masterclass – Part 2, Monitoring

(0)

相关推荐

  • Win7系统监控技巧

    公司的电脑个人隐私性极差,稍不留神就可能让他人窥探到我们的个人隐私。即使知道别人动过自己的电脑想理论但又苦于没有证据这怎么办呢?下面小编就为大家介绍一下Win7系统监控技巧。 在这里,小编以QQ为例, ...

  • linux top命令详解和使用实例及使用技巧(监控linux的系统状况)

    下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的 ...

  • 分享Java性能监控的小技巧

    操作方法 01 很多开发者觉得自己懂Java编程,事实是大多数开发人员都只领会到了Java平台的皮毛,所学也只够应付工作.作者将深度挖掘Java平台的核心功能,揭示一些鲜为人知的事实,帮助您解决最棘手 ...

  • 用无线数传技术应用于智能路灯监控系统的技巧

    随着时代的发展,城市现代化建设步伐不断加快,对城市道路照明及城市亮化工程需求也更大,而能源的供需矛盾也越来越突出,节电节能.绿色照明的要求越来越迫切,越来越高.现在再采用那些传统的手控.钟控城市照明系 ...

  • 监控拾音器避免产生噪音的小技巧

    操作方法 01 1.如果音频线接到其它音频设备,请断开连接后直接连接到随身听耳机/电脑用的普通有源音箱进行测试.如果噪声消失说明监听头本身没有问题,请检查连接的音频设备或其他方面. 2.检查噪声是否由 ...

  • 公司禁用U盘的几个不错的小技巧

    公司禁用U盘和移动硬盘的原因多种多样,最响亮的原因就是防止员工带走机密资料,在这里我提供一种不用专业软件的小技巧给大家,因为你的老板永远相信“自己能解决的事,别花钱”。 方法一、隐藏盘符和禁止查看(适 ...

  • 打印机常见部件检修方法与技巧

    打印机是一种常用的办公设备,它主要包括针式打印机、喷墨打印机、激光打印机等。同时打印机也是一种易出故障的办公设备,而维修打印机说到底就是对其损坏部件的维修,因此了解并精通打印机各种部件的检测与维修无疑 ...

  • 浅谈电脑主板工艺和选购技巧

    做工谈到这里,我再来简单谈一下主板选购的技巧: 1,不要赶时髦,尝鲜,买主板不是买海鲜,一般最新推出主板的软硬件的兼容性还有待时间的考验,有的芯片或主板厂商甚至为了抢占市场,打时间差,推出了未经严格测 ...

  • Windows98优化小技巧

    加快系统启动速度 1、用系统配置程序定制自动选项。 单击“开始”按钮,选择“运行”,在“打开”输入框内输入msconfig,单击“确定”按钮启动系统配置实用程序,单击“常规”标签项,选定“选择性启动” ...