Magic v1 does not support record headers! 问题如何解决?SkyWalking和Kafka孰是孰非?过来看看你就知道了

Magic v1 does not support record headers! 问题如何解决!过来看看你就知道了。

某天登录测试环境,发现登录验证码加载失败!F12查看请求,发现服务器硬盘空间不足。然后就顺其自然去找原因了。
输入 find . -type f -size +500M -print0 | xargs -0 du -h 查找服务器上大文件,结果出现了一个超级大的日志文件,高达33GB,就是它把服务器的硬盘给耗尽了。把它删除了, 前端加载验证码的问题就解决了。
但是呢,值得思考的一点,为什么测试环境一直以来都没问题,今天会出现这种问题呢?我们决定顺藤摸瓜,追溯下去。
然后,从33G的日志文件中抽取了一部分日志信息拿来分析。
日志消息
很快,我们就定位到了错误代码位于 MemoryRecordBuilder.appenWithOffset() line:385。
报错代码

仔细阅读了一下代码,发现它在这里判断了头部的参数!这里要交代一下背景,我们其中一个项目接入了kafka,但是我们是没有没有附加header的参数的。所以,这里就会抛出Magic v1 does not support record headers!这个异常。那么,问题来了,到底是谁偷偷地帮我们添加了这样的参数呢?
后来去咨询了一下同事,发现最近项目中接入了skywalking。那问题大概率是出在它身上了。
目标很明确了,直接去找skywalking,看看它又有什么说辞。
在服务器上找到skywalking的相关jar包,把它拉下来放到idea上分析一波。
首先看的是skywalking-agent.jar。大致看了一下它的目录结构,我把焦点关注放在了SkyWalkingAgent这个类上。
SkyWalkingAgent

很快,我在代码中看到了PluginFinder pluginFinder 这个类,又联想起了先前在服务器上看到pluigns目录下面有kafka相关的插件。
在这里插入图片描述
看到这里,不禁窃喜,赶紧把这个jar包拉下来,剥开它的神秘外衣企图窥探一番。
在这里插入图片描述
先看了一波定义,发现kafka版本和我们项目现在用的正好匹配上了。然后展开目录结构,看看那些类名,我想这里已经很直接了,KafkaProducerInterceptor 这个类名是在是太具吸引力了。让我忍不住点开去看。so,点它。
在这里插入图片描述
点开以后,好家伙,仿佛突然发现了桃源圣地的渔夫一样,喜悦之色再也掩盖不住了。就是圈住的这行代码,在给我们的hear附加参数。那看到这里,问题的根本原因我们已经找到了。所以,我们要怎么解决它呢?建议,第一,你可以升级你的kafka版本;第二,你可以在插件中把这个插件给移除了。很遗憾,这两种方式我们都没来得及尝试,因为我们用来一种更加粗鲁暴力的动作去蹂躏它,你们猜猜会是什么?/阴险
想要更多吗?还想知道它在header里面塞了什么东西?让它如此充实。请继续往下看!
在这里插入图片描述
我们定位代码到最后,发现,它在往header里面塞入了tarceId用来做链路跟踪。这也正是skywalking的核心所在。
完!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值