Redis监控技巧总结 |
本文标签:Redis监控 Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Redis 系统的状态报告 。 复制代码 代码如下: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 -Redis Live -Redis Faina 数据分布 弄清 Redis 中数据存储分布是一件很难的是,比如你想知道哪类型的 key 值占用内存最多 。下面是一些工具,可以帮助你对 Redis 的数据集进行分析 。 -Redis-sampler -Redis-audit -Redis-rdb-tools 原文链接:Redis Masterclass – Part 2, Monitoring |