websocket消息处理失败排查(redis大key)

news/2024/10/18 16:46:20/

排查问题:
websocket 断连问题
客户端连接成功后,会发起消息watchroom, 表示需要加入某个房间进行协同
技术栈:
nodejs + pm2 + socket.io + socket.redis.adapter.io + grpc

watchroom -> websocket -> grpc -> emit

调用grpc 超时失败, 起初是认为grpc 的问题, 于是开了个python脚本 访问grpc,没有问题, 表示grpc 服务端正常。
在一起大规模断连的场景下,关注到日志
timeout reached while waiting for fetchSockets response

于是排查websocket + redis问题, 测试发现 redis本身的连接没有问题,只是某次差点寻会有问题。想到大key的问题,在测试环境复现,复制粘贴大量数据走 websocket 确实会出现断连的情况。
还需要进一步印证这个想法。
简单redis 监控。
我们本身是有prometheus 和 grafana 的,

# 创建docker compose 文件, 输出监控指标
docker-compose-redis-export.yamlversion: "3.2"
services:redis-exporter:image: oliver006/redis_exporter:v1.51.0container_name: redis-exporterrestart: unless-stoppedcommand:- "-redis.password-file=/redis_passwd.json"volumes:- /usr/share/zoneinfo/PRC:/etc/localtime- ./redis_passwd.json:/redis_passwd.jsonexpose:- 9121ports:- "9121:9121"
# redis 连接信息
touch redis_passwd.json
{"redis://127.0.0.1:6379":"pwd"  #如果没有密码 冒号后设置空字符串
}

访问 http://127.0.0.1:9121/ ,显示正常这一步则没有问题。

prometheus yml配置

- job_name: 'redis_exporter_targets'static_configs:- targets:- redis://127.0.0.1:6379metrics_path: /scraperelabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance- target_label: __address__replacement: 127.0.0.1:9121## config for scraping the exporter itself- job_name: 'redis_exporter'static_configs:- targets:- 10.57.1.17:9121

grafna 配置 导入 17507


http://www.ppmy.cn/news/1436563.html

相关文章

vue快速入门(三十五)组件通信-父传子

注释很详细&#xff0c;直接上代码 上一篇 新增内容 父组件传值子组件接收父组件传来的数据 源码 App.vue <template><div id"app"><!-- :item"item"为将item的值传递给MyTest组件 --><MyTest v-for"item in roles" :key&q…

Vue-条件渲染(初识vue渲染)

目录 一、Vue条件渲染-介绍 1.概念 2.特点 3.功能 4.好处 5.应用 二、Vue条件渲染-使用 1.初识渲染 2.条件v-if的使用 3.条件v-if-else的使用 4.条件v-else-if使用 5.template元素使用 6.条件渲染-阶段案例 7.条件v-show 三、Vue条件渲染-实例 1.权限管理系统 …

Python打怪升级(4)

在计算机领域常常有说"合法"和"非法"指的是:是否合理&#xff0c;是否有效&#xff0c;并不是指触犯了法律。 random.randint(begin,end) 详细讲解一下这个random是指模板&#xff0c;也就是别人写好的代码直接来用&#xff0c;在Python当中&#xff0c;…

ONES 功能上新|ONES Wiki 新功能一览

支持在 ONES Wiki 页面中使用分栏进行横向排版&#xff0c;丰富排版方式&#xff0c;帮助用户以更丰富的版式展示内容。 应用场景&#xff1a; 页面的布局对内容的阅读有很大的影响。当页面中有图文混排的需求时&#xff0c;可以通过分栏来组织页面结构&#xff0c;以更清晰、更…

AjaxAxios

Ajax 注&#xff1a;AJAX很少使用&#xff0c;现在都使用更简单的Axios所以只需要了解Ajax即可 概念 AJAX&#xff0c;全称“Asynchronous JavaScript and XML”&#xff08;异步JavaScript和XML&#xff09; 作用&#xff1a; 与服务器进行数据交换&#xff0c;通过Ajax可…

如何批量跟踪京东物流信息

随着电商行业的快速发展&#xff0c;快递业务日益繁忙&#xff0c;无论是商家还是消费者&#xff0c;都需要一种高效、便捷的快递查询工具。快递批量查询高手软件应运而生&#xff0c;以其强大的功能和便捷的操作体验&#xff0c;赢得了广大电商、微商精英们的青睐。 快递批量…

fan-shaped hole的孔倾角越大,流量系数是越大还是越小?

在涉及带有孔倾角的“fan-shaped hole”&#xff08;扇形孔&#xff09;的情况中&#xff0c;孔倾角对流量系数的影响取决于几个因素&#xff0c;包括喷孔的设计、流动的特性以及周围环境的压力条件。扇形孔通常用于气体涡轮发动机的冷却&#xff0c;其中孔倾角&#xff08;即喷…

类和对象(中)(构造函数、析构函数和拷贝构造函数)

1.类的六个默认成员函数 任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 //空类 class Date{}; 默认成员函数&#xff1a;用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数 2.构造函数 构造函数 是一个 特殊的成员函数&a…