当前位置: 首页 > news >正文

关于ws连接coinex偶尔会出现几分钟不更新数据的问题 - Charlie

一、环境

1、语言:go

二、服务概况

image

三、现象

lark告警群中偶尔会出现coinex的btc和eth同时告警,但是他们的最后一次告警时间不相同,代码的告警逻辑是:每隔30s定时从数据库中查询redis中btc和eth的数据updateTime字段的时间,updateTime+30秒与当前时间比较如果大于则表示30秒内数据未更新,发送lark告警。告警信息如下:
🚨 数据监控告警 🚨

🖥️ 服务器IP: xxxxxx
📊 交易所: coinex
💰 币对: BTCUSDT
📡 数据源: websocket
⚠️ 告警类型: timeout
🔴 告警级别: warning
📝 告警消息: WebSocket数据源超时,已超过2m0s未更新
🔑 Redis Key: MD_COINEX_SPOT_VOLUME_BTCUSDT
⏰ 告警时间: 2025-09-30 07:52:55
🕐 最后更新: 2025-09-30 07:47:41
👥 告警群组: 热门币对监控

==================================================
请及时检查数据源状态!

🚨 数据监控告警 🚨

🖥️ 服务器IP: xxxx
📊 交易所: coinex
💰 币对: ETHUSDT
📡 数据源: websocket
⚠️ 告警类型: timeout
🔴 告警级别: warning
📝 告警消息: WebSocket数据源超时,已超过2m0s未更新
🔑 Redis Key: MD_COINEX_SPOT_VOLUME_ETHUSDT
⏰ 告警时间: 2025-09-30 07:52:55
🕐 最后更新: 2025-09-30 07:45:52
👥 告警群组: 热门币对监控

==================================================
请及时检查数据源状态!

四、排查问题

1、首先通过在线websocket网站连接coinex的ws地址,确认告警是否真的是coinex未推送数据导致lark告警的。但是由于该问题是偶尔出现,一直未能出现在线websocke和lark同时告警的情况,因此作罢。
2、怀疑是代码的问题:用ai帮我检查代码的逻辑,ai告诉我可能是redis的pipeline导致数据每次存储时不在同一个slot中,可能一批数据导致跨节点存储时部分数据失败导致的,我开始调整这块的代码,突然想到如果真是这样的话,为什么只有coinex的这两个币对有问题,币安、gateio、bybit都没有出现过这种问题,感觉问题不在这边,因此作罢。
3、排查日志,为什么最后才是排查日志呢。因为之前看到过在xt、bitmart交易所出现过btc、eth服务端隔30秒以上不推送数据的情况,因此一直觉得是交易所那边没有btc的交易导致的数据没有及时更新。image
直到在测试环境看到每次lark告警都是websocke断开重连之后才解开真实的bug原因,下面是websocket重连之后,服务端推送的数据:

{"method": "deals.update", "params": ["BTCUSDT", [{"id": 5844394418, "time": 1759125875.607549, "type": "sell", "price": "111674", "amount": "0.00011228"}, {"id": 5844394417, "time": 1759125875.607475, "type": "sell", "price": "111675", "amount": "0.00011226"}, {"id": 5844394416, "time": 1759125875.607362, "type": "sell", "price": "111676", "amount": "0.00003306"}, {"id": 5844391212, "time": 1759125813.756979, "type": "sell", "price": "111700", "amount": "0.01348103"}, {"id": 5844391046, "time": 1759125811.868881, "type": "buy", "price": "111701", "amount": "0.02107873"}, {"id": 5844390630, "time": 1759125810.063611, "type": "buy", "price": "111701", "amount": "0.01263460"}, {"id": 5844390492, "time": 1759125809.638278, "type": "sell", "price": "111700", "amount": "0.00001294"}, {"id": 5844390491, "time": 1759125809.638175, "type": "sell", "price": "111700", "amount": "0.00036332"}, {"id": 5844390490, "time": 1759125809.6381171, "type": "sell", "price": "111705", "amount": "0.00025242"}, {"id": 5844390489, "time": 1759125809.638052, "type": "sell", "price": "111705", "amount": "0.00010416"}, {"id": 5844390488, "time": 1759125809.6379759, "type": "sell", "price": "111705", "amount": "0.00010416"}, {"id": 5844390487, "time": 1759125809.6378551, "type": "sell", "price": "111705", "amount": "0.00224491"}, {"id": 5844390187, "time": 1759125808.106873, "type": "sell", "price": "111705", "amount": "0.00005533"}, {"id": 5844390143, "time": 1759125807.7271011, "type": "sell", "price": "111705", "amount": "0.00014024"}, {"id": 5844389894, "time": 1759125806.05726, "type": "buy", "price": "111706", "amount": "0.00117328"}, {"id": 5844387862, "time": 1759125753.638063, "type": "buy", "price": "111715", "amount": "0.00603992"}, {"id": 5844387794, "time": 1759125752.538177, "type": "buy", "price": "111715", "amount": "0.00860314"}, {"id": 5844387591, "time": 1759125751.3388391, "type": "buy", "price": "111715", "amount": "0.01099020"}]], "id": null
}

第一条数据的时间是2025-09-29 14:04:35,最后一条数据的时间是2025-09-29 14:02:31,而我在建立连接之后循环获取数据,就会把最后一条数据也存到redis中,那么就会出现假如刚好时间最早的一条数据存到redis中,lark开始检查数据更新情况,就会发出告警。在线上重点排查ws重连和告警的日志。和我的猜想相吻合。

五、解决问题

ws每次建立连接之后只获取第一条数据。

六、总结

一定要仔细查看日志,不要盲目的对代码进行修改。

http://www.hskmm.com/?act=detail&tid=22366

相关文章:

  • 【C#】以 BlockingCollection 为核心的多相机 YOLO 检测任务处理框架 - 指南
  • CAD安装Error 1402权限问题解决
  • 智能体详解——极简深度研究Agent
  • 题解:P9868 [NOIP2023] 词典
  • 304、渭城曲
  • AtCoder Beginner Contest 425
  • AT_agc052_b [AGC052B] Tree Edges XOR
  • 背单词 纯英文 2025年10月
  • 英语背单词 专八词汇 中英对照 2025年10月
  • 「Diary Solution Set」October 2025 在凉雨停歇的那天
  • macOS Tahoe All In One
  • 风力发电机输出功率模型综述 - 详解
  • 2025年小红书创作者影响力分析报告:基于10.5万条素材构建评估模型,识别高影响力内容特征,优化推荐算法与运营策略,涵盖用户分层、互动数据、地理位置分布,提供内容策略优化与创作者成长建议。
  • MaopaiJD Esp8266 代码
  • 英语_错题集_25-10
  • 公民科学研究奖项众人智慧表彰技术创新项目
  • 25.10.1随笔联考总结
  • C# WPF {x:Reference}的作用
  • Ynoi Easy Round 2015 学习笔记
  • 1数学建模模型分类
  • 数学每日?题
  • 最大公约数和最小公倍数
  • OpenSpeedy最新版下载,夸克百度网盘加速提速|游戏加速工具|官网入口
  • Nginx核心配备详解:访问控制、用户认证与HTTPS部署
  • 5. 最长回文子串
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤
  • 2025 年搅拌机设备厂家 TOP 企业品牌推荐排行榜,盘点磁混凝系统 / 发酵罐 / 刮泥机 / 推进式 / 脱硫侧搅拌机公司推荐!
  • 福州市 2025 国庆集训 Day1 前三题题解
  • Python常用数据类型详解:字符串、列表、字典全解析
  • 强连通,Tarjan,缩点