ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CacheCloud 延迟监控实战:从“延迟事件“到“慢查询命令“的定位链路

CacheCloud 延迟监控实战:从“延迟事件“到“慢查询命令“的定位链路 后端运维【免费下载链接】cachecloud搜狐视频(sohu tv)Redis私有云平台 支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本提升资源管控能力和利用率。平台提供快速搭建/迁移运维管理弹性伸缩统计监控客户端整合接入等功能。(CacheCloud is a Redis cloud management platform. It supports Standalone, Sentinel, and Cluster architectures for Redis, effectively reducing large-scale Redis operation and maintenance costs, and improving resource management and utilization. The platform provides rapid construction/migration, operation and maintenance management, elastic scaling, statistical monitoring, client integration and access and other functions)项目地址https://gitcode.com/gh_mirrors/ca/cachecloud点击查看免费下载导读本文讲解搜狐视频自研 Redis 云平台 CacheCloud 中的延迟监控功能平台以延迟事件为切入点统计应用App下发生的各类延迟事件并将延迟事件与其发生时间点对应的Redis 慢查询命令SLOWLOG相互关联帮助开发者快速发现、定位 Redis 使用过程中的性能问题。读完本文你将掌握 CacheCloud 延迟监控的页面操作方式、延迟事件与慢查询的对应关系、底层数据模型与采集实现原理以及 slowlog 相关 Redis 参数在平台中的默认取值。说明本文涉及的功能界面图均位于仓库 cachecloud-web/src/main/resources/static/img/function/client 目录可在 CacheCloud 前端页面中对应查看。一、延迟监控的整体设计CacheCloud 的延迟监控统计的是应用下发生的延迟事件。所谓延迟事件是指客户端访问 Redis 过程中出现异常或高耗时现象的统称例如命令调用超时某条命令在客户端侧超过了约定的等待时间连接失败客户端连接 Redis 实例失败。延迟监控页面的核心思路是根据事件发生的时间点把延迟事件与慢查询命令一一对应起来从而回答两个问题——这个应用在什么时刻、哪个实例上变慢了以及那一刻 Redis 上到底执行了什么慢命令。对应地页面从上到下分为三个核心区域参见 client-latency.md延迟事件统计展示各延迟事件数量的趋势图Redis 实例延迟 慢查询统计按实例聚合展示延迟事件数和慢查询数各实例慢查询情况展示每个实例下的慢查询明细。整体界面如下图所示该页面以日期为查询维度默认当天支持切换查询日期在2021-02-22这类示例数据中可以看到延迟事件集中在凌晨 02:00、14:00、17:00 等高峰时间点且同一时间点往往叠加多种事件类型——这正是需要按事件点下钻定位根因的原因。二、延迟事件统计趋势图与下钻详情2.1 趋势图的含义延迟事件统计区域绘制了各延迟事件数量的趋势图X 轴为时间按小时粒度Y 轴为事件个数。图中的多条曲线/柱形对应不同类型的延迟事件例如fast-command快命令延迟事件aof-writeAOF 持久化写延迟aof-write-alone独立的 AOF 写延迟事件forkRedis 进程 fork 子进程产生的延迟事件command全量命令类延迟事件。这些事件类型与 Redis 官方的延迟诊断思路一致如SLOWLOG记录命令耗时、LATENCY事件用于统计 fork / aof-write / command 等类别的延迟CacheCloud 将其作为独立的延迟事件维度进行统计展示。2.2 点击图中点查看延迟事件详情趋势图支持点击图中某个点查看该时间点下延迟事件的详情页面会以下钻方式展示实例延迟事件聚合统计表列出该时间点发生延迟事件的实例及各自的延迟个数单实例延迟事件明细按实例分组展示每个实例的延迟事件明细字段包括事件名称、延迟时间点精确到毫秒、延迟耗时单位毫秒以及关联慢查询入口。典型下钻结果如下图所示示例中某应用在2021-02-22 02:25:00这个时间点多个实例同时上报了fork与command两类事件耗时在 65ms154ms 之间均能关联到对应的慢查询记录从源码看这一下钻链路由 AppClientDataShowController 支撑GET /latencyCommandDetails按应用与时间点searchTime毫秒时间戳内部格式化为yyyyMMddHHmm00分钟粒度聚合各节点的事件统计并拉取每个节点的延迟命令明细GET /latencyCommandDetail/node按客户端 IP、节点host:port、时间区间查询该节点的延迟命令详情列表。底层数据则由AppClientExceptionStatistics延迟事件聚合统计与AppClientLatencyCommand延迟命令明细两张表承载二者通过latencyCommands逗号分隔的命令明细 id 列表字段关联。三、Redis 实例延迟 慢查询统计趋势图下方是Redis 实例延迟 慢查询统计表格核心字段为字段含义序号行号实例信息格式为IP:端口如10.xxx.xxx.60:6396延迟事件个数该实例在查询区间内发生的延迟事件数量慢查询个数该实例在查询区间内被记录的慢查询数量该表把客户端视角的延迟事件和服务端视角的慢查询放到同一个实例维度上对照如果一个实例的延迟事件个数与慢查询个数都偏高说明客户端感知到的变慢大概率来自 Redis 服务端的高耗时命令反之若延迟事件多而慢查询少则更可能是网络、连接池或客户端侧问题。在数据模型上实例维度的聚合由 AppClientReportExceptionServiceImpl 提供getSumCmdExpStatGroupByNode按节点node汇总某时间点的命令异常统计返回node - 统计对象的映射源码位置getDistinctClientNodeStatistics查询去重后的客户端-节点统计用于页面下钻源码位置。四、各实例慢查询情况页面第三部分展示详细的实例慢查询情况。慢查询明细表中包含以下字段字段含义序号行号慢查询 idRedis SLOWLOG 返回的日志唯一 id耗时单位微秒命令执行耗时Redis 的 slowlog 阈值单位即为微秒命令触发慢查询的命令原文超长命令会被截断展示发生时间慢查询发生的精确时间从仓库的instance-slowlog.png示例数据可以看到INFO all、CLUSTER info这类高耗时的管理/状态查询命令最容易成为慢查询的来源耗时可达 1.2 万5.9 万微秒需要业务方重点关注。4.1 慢查询的采集与落库CacheCloud 的慢查询数据通过 RedisCenterImpl.collectRedisSlowLog 从 Redis 实例周期采集关键流程如下校验appId 0、host非空、port 0并查询对应InstanceInfo若实例不存在或为 Sentinel 类型则直接忽略Sentinel 实例不采集慢查询调用getRedisSlowLogs(appId, host, port, 100)通过SLOWLOG GET一次性获取最近100 条慢查询源码位置将每条RedisSlowLog转换为InstanceSlowLog实体transferRedisSlowLogToInstance填充appId、instanceId、ip、port、slowLogId、costTime微秒、command、executeTime等字段通过异步线程池redis-slowlog-pool提交batchSave批量落库避免阻塞采集主流程。InstanceSlowLog实体的关键字段定义见 InstanceSlowLog.java其中command超过 30 个字符时会被截断并以...结尾避免超长命令拖慢页面展示。4.2 慢查询的查询接口按应用查询慢查询的能力由 InstanceSlowLogDao 提供getByAppId(appId)获取某应用全部慢查询search(appId, startDate, endDate)按时间区间搜索慢查询getInstanceSlowLogCountMapByAppId(appId, startDate, endDate)按实例聚合慢查询个数供上文实例延迟 慢查询统计表格使用getAppSlowLogCount(appId, startDate, endDate)统计指定区间内应用的慢查询总数。Redis 中心服务层则在 RedisCenterImpl 中封装了对应的查询入口供上层 Controller 与页面调用。五、影响延迟监控的两个 Redis 参数CacheCloud 将 Redis 慢查询相关的两个参数纳入实例配置管理见 RedisConfigEnum.java参数平台默认值说明slowlog-log-slower-than10000慢查询被记录的阈值默认10000 微秒 10 毫秒执行耗时超过该值的命令才会进入 SLOWLOGslowlog-max-len128最多记录慢查询的条数超出后最旧的记录会被淘汰这两项参数的默认取值直接影响延迟监控的覆盖范围若slowlog-log-slower-than设置过大例如 100ms大量耗时在 10ms100ms 之间的准慢查询将不会被记录页面上的慢查询个数会明显偏少若slowlog-max-len设置过小Redis 内存中的慢查询会被快速滚动淘汰CacheCloud 周期采集时可能只能拿到最新的一小部分。因此在排查延迟问题时建议先确认实例上这两项参数的当前取值是否符合预期必要时通过 CacheCloud 的实例配置功能进行调整保证延迟事件与慢查询命令的关联有足够的样本数据支撑。六、延迟事件与慢查询的完整对应关系综合页面与源码CacheCloud 延迟监控的完整数据链路可以概括为客户端上报接入 CacheCloud 的 Redis 客户端在发生连接失败、命令调用超时等异常时按分钟粒度上报异常事件AppClientReportExceptionServiceImpl.batchSave见 源码位置服务端解析落库上报数据被解析为AppClientExceptionStatistics聚合统计type4连接失败、type5命令调用超时累计次数count、累计耗时cost其中的命令失败明细则生成AppClientLatencyCommand并回填 id 列表generate 方法服务端慢查询采集平台调度任务周期性执行collectRedisSlowLog将 RedisSLOWLOG数据落库为InstanceSlowLog页面关联展示延迟监控页面按发生时间点将延迟事件明细与对应实例的慢查询记录关联支持从趋势图逐层下钻到具体命令。其中AppClientExceptionStatistics的latencyCommands字段逗号分隔的延迟命令 id 列表与AppClientLatencyCommand记录command、args、size、invokeTime超长 args 会被裁剪至 255 字符共同构成了事件 → 命令明细的关联索引相关实体定义见 AppClientExceptionStatistics.java 与 AppClientLatencyCommand.java。七、使用建议与排查思路结合上述机制在使用 CacheCloud 延迟监控时可以参考以下排查路径先看趋势图找高峰通过延迟事件统计趋势图定位延迟事件集中的时间点如凌晨定时任务、缓存预热时段点击峰值下钻到实例查看该时间点各实例的延迟事件明细重点关注fork、aof-write等典型延迟事件对照慢查询统计交叉验证在实例延迟 慢查询统计表中比较延迟个数与慢查询个数的比例关系判断问题在服务端还是客户端侧查看慢查询明细定位命令在各实例慢查询情况中查看具体慢命令常见如INFO、CLUSTER info、BGREWRITEAOF等结合业务场景评估是否可通过命令优化、拆分大 key 或调整缓存策略解决检查 slowlog 参数配置确认slowlog-log-slower-than与slowlog-max-len的取值是否合理必要时在 CacheCloud 实例配置中调整后重新观察。结语CacheCloud 的延迟监控围绕延迟事件与慢查询命令的双视角设计将客户端侧的感知异常与服务端侧的慢命令证据打通是排查大规模 Redis 使用问题的高效入口。本文从页面操作、数据模型到采集实现逐层展开配合仓库源码client-latency.md、AppClientReportExceptionServiceImpl.java、RedisCenterImpl.java即可完整还原该功能的实现与使用方式。赞分享后端运维【免费下载链接】cachecloud搜狐视频(sohu tv)Redis私有云平台 支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本提升资源管控能力和利用率。平台提供快速搭建/迁移运维管理弹性伸缩统计监控客户端整合接入等功能。(CacheCloud is a Redis cloud management platform. It supports Standalone, Sentinel, and Cluster architectures for Redis, effectively reducing large-scale Redis operation and maintenance costs, and improving resource management and utilization. The platform provides rapid construction/migration, operation and maintenance management, elastic scaling, statistical monitoring, client integration and access and other functions)项目地址https://gitcode.com/gh_mirrors/ca/cachecloud点击查看免费下载相关推荐Apache DataFusion查询延迟目标SLO定义与监控Apache DataFusion查询延迟目标SLO定义与监控 在数据处理系统中查询延迟直接影响用户体验和业务决策效率。Apache DataFusion作大数据数据分析后端终极网络延迟优化指南从Linux内核到实战调优的完整解决方案终极网络延迟优化指南从Linux内核到实战调优的完整解决方案 网络延迟是影响系统性能的关键瓶颈特别是在高并发、实时性要求高的场景下。Linux系统提供了丰富网络运维Apache DataFusion查询延迟监控工具Grafana配置Apache DataFusion查询延迟监控工具Grafana配置 概述 Apache DataFusion是一个高性能的分布式SQL查询引擎在处理大规模大数据数据分析后端上一篇微信聊天记录导出一次搞定WeChatMsg把对话存成永久文件十年后照样打开下一篇IPXWrapper保姆级上手指南5分钟让《红色警戒2》《暗黑破坏神》在现代Windows重新局域网联机创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表