Redis监控技巧

本文来自 Bugsnag 的联合创始人 Simon Maynard 的系列文章,作者根据几年来对 Redis 的使用经历,对 Redis 监控方法进行了系统性

本文来自 bugsnag 的联合创始人 simon maynard 的系列文章,作者根据几年来对 %ignore_a_1% 的使用经历,对 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 来说,它是单线程的,一旦出现慢日志,可能就需要马上得到重视,最好去查一下具体是什么原因了。

韩顺平PHP入门到精通全套笔记 韩顺平PHP入门到精通全套笔记

韩顺平,毕业于清华大学,国内著名的软件培训高级讲师,先后在新浪、点击科技、用友就职。主持或参与《新浪邮件系统》、《橙红sns(社会化网络)网站》、《点击科技协同软件群组服务器端(Linux/solaris平台)》、《国家总参语音监控系统》、《英语学习机系统》、《用友erp(u8产品)系统》等项目。实战经验丰富,授课耐心细致,通俗易懂,勇于实践,勤于创新,授课风格贴近生活,授课语言生动风趣,多年

韩顺平PHP入门到精通全套笔记 632 查看详情 韩顺平PHP入门到精通全套笔记

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1046309.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 08:08:04
下一篇 2025年12月2日 08:10:19

相关推荐

  • Redis3.2开启远程访问详细步骤

    redis是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。redis支持远程访问,详细步骤小编已为大家整理出来了,具体步骤如下: redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf打开r…

    好文分享 2025年12月24日
    000
  • Redis配置文件redis.conf详细配置说明

    本文列出了redis的配置文件redis.conf的各配置项的详细说明,简单易懂,有需要的盆友可以参考哦。 redis.conf 配置项说明如下 redis配置文件详解 # vi redis.confdaemonize yes #是否以后台进程运行pidfile /var/run/redis/red…

    好文分享 2025年12月24日
    000
  • Flask应用中动态图片更新与上传教程

    本教程详细介绍了如何在flask web应用中展示静态图片,并通过%ignore_a_1%实现图片的定时刷新,解决浏览器缓存问题。同时,文章还涵盖了如何在flask后端处理图片上传,并将其与前端展示及刷新机制相结合,提供了一个完整的图片管理与动态显示解决方案。 1. Flask应用中静态图片的基本展…

    2025年12月23日 好文分享
    000
  • PHP 多语言网站切换:会话管理与翻译函数实践

    本教程详细介绍了使用 php 构建多语言网站的实现方法。文章涵盖了如何通过 url 参数和会话管理实现语言切换,以及如何设计一套健壮的翻译加载与显示机制,以避免常见的变量未定义和字符串偏移错误。通过封装的辅助函数,确保翻译内容正确加载和渲染,提升代码的可维护性和用户体验。 构建多语言网站的核心挑战 …

    2025年12月23日
    300
  • 将独立Python逻辑集成到Django Web应用:以计时器项目为例

    本教程旨在指导初学者如何将一个独立的Python命令行计时器应用改造并集成到Django Web项目中。文章将详细介绍如何通过Django的视图、表单和模板机制处理用户输入、执行核心Python逻辑,并最终在HTML页面上展示结果,同时探讨将命令行应用特性迁移到Web环境的关键考量。 理解从命令行到…

    2025年12月23日
    000
  • 如何将Python后端逻辑与Django和HTML进行集成

    本教程旨在指导初学者如何将独立的Python命令行应用程序转换为基于Django的Web应用。文章将详细阐述如何通过Django的视图、URL配置和表单系统,将Python逻辑与HTML前端进行交互,实现用户输入捕获和结果展示。重点在于重构Python代码以适应Web环境,并利用Django For…

    2025年12月23日
    000
  • 将Python命令行应用集成到Django Web项目:以计时器为例

    本文将指导您如何将一个独立的python命令行计时器应用程序改造并集成到django web项目中。我们将详细介绍如何利用django的视图、模板和表单系统来捕获用户输入,并将原有的python逻辑适配到web环境,同时探讨在web应用中处理后台任务和用户通知的策略,帮助初学者顺利过渡。 从命令行到…

    好文分享 2025年12月23日
    000
  • 部署与调度Node.js爬虫:从本地执行到云端集成

    本教程详细指导如何部署和调度一个基于node.js的网页爬虫,使其能够每日自动运行并将其数据提供给前端应用。文章将区分客户端与服务器端javascript的运行环境,介绍本地任务调度方法,并探讨将爬虫集成到在线服务以实现数据共享的策略,同时涵盖数据持久化、cors处理及部署最佳实践。 1. 理解No…

    2025年12月23日
    000
  • HTML5WebSocket怎么通信_HTML5WebSocket实现实时通信的原理与代码

    WebSocket基于TCP实现全双工通信,通过HTTP握手升级协议后进行持久化双向数据传输,适用于聊天、通知等高频交互场景;前端使用JavaScript的WebSocket API建立连接并监听事件,后端可用Node.js的ws库创建服务器;需注意代理配置、自动重连、JSON格式消息及安全认证等问…

    2025年12月23日
    000
  • 实现实时UI更新:利用SSE与WebSocket告别传统轮询

    本文探讨了如何在不依赖传统http轮询的情况下,实现用户界面(ui)的实时动态更新,尤其适用于聊天应用中的用户活动状态显示。文章详细介绍了两种主流技术:服务器发送事件(sse)和websocket,并阐明了它们的工作原理、适用场景及选择依据。通过采用这些技术,服务器能够主动向客户端推送数据,从而避免…

    好文分享 2025年12月23日
    000
  • HTML5在线如何实现实时视频聊天 HTML5在线通信功能的开发方法

    实现实时视频聊天主要依赖WebRTC技术,1. 通过getUserMedia获取音视频流,RTCPeerConnection建立P2P连接,RTCDataChannel传输数据;2. 使用Node.js+Socket.IO搭建信令服务器交换SDP与ICE信息;3. 借助STUN/TURN服务器穿透N…

    2025年12月23日
    000
  • Web内容访问控制:用户认证、会话管理与数字版权保护(DRM)

    本文旨在提供一个全面的指南,介绍如何在web应用中实现基于用户登录状态的内容访问控制。我们将详细探讨利用会话和cookie进行用户认证的机制,包括登录流程、会话管理及安全性考量。此外,文章还将深入讨论数字版权管理(drm)技术,如widevine、playready和fairplay,以应对视频内容…

    2025年12月23日
    000
  • 如何实现HTML在线实时聊天_HTML在线实时聊天功能实现与消息推送方案

    核心是WebSocket实现双向通信,替代传统HTTP轮询;前端用JavaScript创建连接并监听消息,后端如Node.js或Spring Boot提供支持;备选方案包括SSE和长轮询;配合心跳、重连、消息队列等机制保障稳定性。 要在HTML网页上实现在线实时聊天,核心是解决消息的即时推送问题。传…

    2025年12月23日
    000
  • Discord用户头像链接的动态获取与持久性挑战

    本文探讨了discord用户头像链接的持久性问题。由于discord为上传图片生成随机url,直接获取一个“始终更新且链接不变”的用户头像链接是不可行的。唯一可靠的方法是通过discord api动态获取用户的最新头像url,并利用其用户id作为稳定标识符。 Discord用户头像URL的本质与限制…

    2025年12月23日
    000
  • HTML表单重复提交漏洞怎么避免_表单重复提交导致数据异常漏洞避免方法

    答案:避免HTML表单重复提交需前端禁用按钮、后端令牌验证与幂等设计、数据库唯一约束协同防御。 HTML表单重复提交,这事儿说起来挺头疼的,因为它不仅影响用户体验,更可能直接导致数据异常,比如订单重复创建、支付重复扣款,甚至一些敏感操作被多次执行。在我看来,避免这类漏洞,本质上是一场客户端与服务器端…

    2025年12月23日
    000
  • HTML数据如何实现实时采集 HTML数据流式处理的架构设计

    答案:构建低延迟、高吞吐的实时HTML流处理系统需分四步:1. 采集层用轻量HTTP或无头浏览器动态抓取,结合增量识别与分布式集群提升效率;2. 解析层采用流式解析器与规则抽取,提取结构化数据并容错降级;3. 流架构通过消息队列解耦,接入Flink等引擎做实时计算与多端输出;4. 保障层实现重试、限…

    2025年12月23日
    000
  • HTML数据如何存储到数据库 HTML数据存储的技术方案比较

    直接存储原始HTML字符串最常见,适用于富文本编辑器输出等内容,实现简单、读取快,但需防范XSS和SQL注入;结构化JSON存储适合需程序化处理的场景,支持条件查询但渲染开销大;专用格式如Delta适用于协同编辑;分离存储则提升大型系统的查询性能与管理灵活性。 将HTML数据存储到数据库时,核心目标…

    2025年12月23日
    000
  • HTML数据如何实现分布式采集 HTML数据分布式爬虫的架构设计

    答案:构建分布式HTML采集系统需整合任务调度、去重、存储与监控模块,以Redis为核心协调任务分发与去重,通过消息队列实现负载均衡,结合布隆过滤器减少重复抓取,利用无状态工作节点支持弹性扩展,依托ZooKeeper保障高可用,并集成反爬适配与请求控制机制,确保系统稳定高效运行。 要实现HTML数据…

    好文分享 2025年12月23日
    000
  • HTML数据如何构建数据API HTML数据接口的开发与部署

    答案:将HTML转为API需先解析稳定结构化数据,再用Flask等框架提供JSON接口。1. 确认HTML有清晰标签与更新规律;2. 用Python爬取并解析页面,封装为REST API;3. 部署至云服务器或Serverless平台;4. 加缓存、设请求头、控频次以提升稳定性。 直接把HTML数据…

    2025年12月23日
    000
  • HTML数据如何实现批量下载 HTML数据批量采集的自动化方案

    实现HTML数据批量下载需构建自动化流程,核心是模拟访问、提取内容、结构化存储。1. Python+Requests+BeautifulSoup适合中小规模,通过requests获取页面,BeautifulSoup解析并保存为CSV/JSON。2. 动态页面用Selenium或Playwright,…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信