`
ssxxjjii
  • 浏览: 938662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis监控技巧

 
阅读更多

本文来自 Bugsnag 的联合创始人 Simon Maynard 的系列文章,作者根据几年来对 Redis 的使用经历,对 Redis 监控方法进行了系统性的总结,干货很多,值得一看。

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

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 文件进行分析来取得统计数据的。

http://blog.nosqlfan.com/html/4166.html

分享到:
评论

相关推荐

    redis-stat 监控集成包

    Redis 是一个高性能的键值数据库,常用于...此外,了解 Redis 的最佳实践和配置优化技巧也是提升监控效果的关键。通过结合 `redis-stat` 和其他工具,你可以全面了解并管理你的 Redis 集群,确保服务的稳定高效运行。

    Redis实战Redis实战

    书中还会涉及哨兵(Sentinel)系统,它能够监控Redis集群的状态,自动进行故障检测和故障转移,进一步提升系统的可用性。 此外,Redis还支持丰富的操作命令,如TTL(Time To Live)用于设置键的过期时间,EXPIRE和...

    redis6.2.6的Windows版本

    Redis是一款高性能的键值存储系统,它在IT领域被广泛应用于缓存、数据库以及消息中间件等场景。本文将深入探讨“redis...无论是快速开发测试,还是在生产环境中部署,了解和掌握Redis的基础知识和操作技巧都至关重要。

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    在《Redis实战》中文完整版中,新手可以系统地学习Redis的基础知识和实战技巧。以下是根据标题和描述提炼出的一些关键知识点: 1. **Redis快速入门**:这部分通常会介绍如何安装Redis,包括在各种操作系统(如Linux...

    redis软件、redis客户端、redis可视化工具RedisDesktopManager,redis教程

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常用于数据库、缓存和消息中间件等场景。...掌握Redis的使用和管理技巧,对于提升应用的性能和可扩展性都大有裨益。

    Redis - Redis深度历险.pdf.zip

    "Redis深度历险"这本书可能是为了深入讲解Redis的各种特性和使用技巧,帮助读者全面了解和掌握这个强大的数据存储解决方案。 在Redis中,关键知识点包括: 1. **数据类型**:Redis提供了丰富的数据结构支持,如...

    redis Windows管理工具

    Redis是一款高性能的键值对数据存储系统,常用于缓存、数据库和消息中间件等场景。在Windows平台上,虽然Redis原生支持Linux操作...了解并熟练掌握这些工具和技巧,对于Windows环境下的Redis应用开发和运维至关重要。

    RedisDesktopManager

    为了更好地利用RedisDesktopManager,用户可以查阅官方文档、在线教程以及社区论坛,获取更多操作技巧和解决问题的方法。 总之,RedisDesktopManager是Redis用户的得力助手,它简化了数据库管理,提高了工作效率,...

    redis客户端,连接查看redis数据库

    Redis是一种高性能的键值对数据存储系统,常用于缓存、...以上就是关于"redis客户端,连接查看redis数据库"的知识点,包括连接方式、客户端类型、操作和管理技巧等。理解并掌握这些内容,有助于高效地使用Redis服务。

    redis实战(带书签,高清扫描)

    Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、数据库、消息中间件等多...通过阅读这本书,你将能够熟练掌握Redis的关键特性和使用技巧,为你的开发工作带来极大的便利。

    redis笔记+资料

    4. **性能优化**:学习 Redis 的性能调优技巧,包括合理设置内存限制、优化网络连接等。 5. **复制与集群**:理解主从复制的工作机制,以及如何搭建 Redis 集群,实现高可用和水平扩展。 6. **安全与监控**:了解 ...

    redis 可视化工具,redis-desktop-manager

    通过这个工具,用户可以连接到本地或远程的 Redis 服务器,进行数据的增删查改操作,同时还提供了多种实用功能,如数据导出导入、监控 Redis 性能指标等。 二、主要功能 1. **连接管理**:支持添加多个 Redis ...

    redis集群,使用ruby脚本搭建集群

    Redis 是一个高性能的键值数据库,...然而,理解集群的工作原理和管理技巧对于维护高可用的 Redis 系统至关重要。通过以上步骤,你可以成功地使用 Ruby 脚本搭建 Redis 3.0.0 集群,并享受到它带来的性能和扩展性优势。

    windows 操作系统redis客户端

    了解Redis性能调优技巧,如调整内存分配策略、禁用不必要的日志记录、使用适当的缓存淘汰策略等,可以显著提升Redis服务的响应速度。 总结,Windows操作系统中的Redis客户端工具是与Redis服务器交互的重要桥梁,...

    redis视频以及代码

    Redis是一款高性能的键值数据库,常用于数据缓存、消息队列、持久化存储等多种场景。在本资源包中,包含的"redis视频"和"代码"应当是...通过视频教程,可以更直观地理解这些概念和操作,加深对Redis的理解和使用技巧。

    redis for windows 64

    - "EventLog.dll":这是一个动态链接库,用于在 Windows 上记录 Redis 的事件日志,帮助管理员监控 Redis 的运行状态。 - "redis-server.exe":这是 Redis 的服务器进程,负责处理客户端请求和管理数据。 - ...

    mac redis-3.2.8

    这些工具可以帮助用户更直观地查看和操作Redis中的数据,例如Key-Value的增删改查,监控性能指标,以及管理集群等。常见的Redis GUI工具有RedisInsight、Redis Commander、Redis Desktop Manager等。 关于在Mac上...

    Redis设计与实战

    最后,书中可能会涉及Redis的运维和监控,包括如何配置Redis服务器,设置合适的内存上限,监控性能指标,以及在出现问题时如何进行故障排查和恢复。 综上所述,《Redis设计与实战》这本书全面介绍了Redis的核心概念...

    mac RedisDesktopManager-0.9.1

    6. **监控与日志**:提供实时的键变化监控和命令执行日志。 7. **备份与恢复**:可以对数据库进行备份并恢复,确保数据安全。 **macOS版Redis Desktop Manager 0.9.1** 这个特定的版本是针对macOS系统的,特别是...

    Redis面试指南:Redis面试宝典实用技巧分享

    为Redis集群提供高可用性解决方案,监控主从节点的状态,自动故障转移,确保服务不间断。 6. Redis Cluster: 自动分片的分布式解决方案,将数据分散在多个节点上,提供水平扩展能力。 7. 事务(Transactions)...

Global site tag (gtag.js) - Google Analytics