XX业务反序列化数据报错问题定位报告

XX业务反序列化数据报错问题定位报告

1 问题描述

XX业务在高负载tps压测场景下,业务过程中的反序列化数据操作时发现数据解析报错的情况。

2 测试环境

本次测试机
CPU 鲲鹏920
内存 512GB
网卡 单口100Gbps*2
操作系统 Kylin V10 SP1

n 应用软件

软件名称 版本 说明
JAVA 1.8.0_242 依赖版本
Disruptor 3.4.3 依赖版本
Netty 4.1.90-3 依赖版本

3 组网信息

TLV****结构设计:

4 解析数据报错问题分析

业务在高负载tps压测场景下业务队列线程处理缓冲区数据出现反序列化报错。报错原因是数据里面包含了非法信息,即源数据遭到篡改。

4.1 代码Debug分析

通过debug分析,原先正常的数据中的payloadLength仅为36-39的数据范围,但是数据遭到篡改后变成了错误值千万级数据,进而导致解析报错。

4.2 抓取系统报文解析

4.2.1 粘包/拆包现象

采用tcpdump抓取系统报文,正常十六进制报文内容格式有规范,均以01 01 00 00开头。但是分析过程中发现数据有粘包/拆包现象,导致了数据头偏移,报文内容不再以01 01 00 00开头。此时怀疑是代码无法正常处理粘包/拆包现象导致,后续与客户确认在业务层针对该现象已实现代码可以正常处理。

4.2.2 报错data数据解析

打印业务报错时的metadata数据,并在tcpdump下来的报文中找到对应的metadata数据,即08 c9 db d9 e1 03 10......开头的报文位置。

在tcpdump下来的报文中找到报错的metadata数据,发现报文存在不完整的现象。

正常的两段报文如下图所示,当收到的报文是完整的时候,业务不会解析错误。

4.3 上下报文序列号排查

Tcpdump中的报文ID为XX,在wireshark中排查该报文序列号正常,19217329 + 39096 = 19256425,说明不存在重传报文等异常问题。

5 结论

存在重传报文等异常问题。

外链图片转存中...(img-BRtec9Lz-1789485131259)

5 结论

本次业务解析报错通过多轮分析,最终定位到是服务器的网卡收到的报文有问题。后经排查是数据压测问题导致数据被截断。

相关推荐
huainingning7 小时前
RJ SW Console口忘记密码处理方法
linux·运维·服务器
布裘7 小时前
【银河麒麟】桌面系统循环登录,无法进入桌面?
linux·运维·服务器
慧都小项7 小时前
程序到了Linux才出错?用CLion把调试接到目标环境
linux·运维·服务器
Ruiery9 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器
2401_8685347810 小时前
无线网络规划设计
服务器·网络
库拉镜像AI牛牛10 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
Android系统攻城狮10 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_max调用流程与实战(五十九)
linux·运维·服务器·gstreamer音视频·音视频进阶·gstreamer音视频进阶
l1t11 小时前
DeepSeek总结的一个不含数据的 DuckDB 数据库
服务器·数据库·duckdb
忆挽篱笙歌11 小时前
makefil
linux·运维·服务器
变量探索SEQVEC12 小时前
一个网段里 10 个 IP,其实是同一个人:13 天蜜罐日志的攻击者画像
服务器