记一次网络故障排除经验

我们有一个thrift服务,在日志中发现了很多类似于“THeaderException: Unsupported client type”的错误。他的发生频率很固定,大概每分钟一次,我们不知道发生了什么问题。也不知道是否影响了我们的服务。所以开始了故障排查。

我们第一步的设想是这样的。我们先用tcpdump抓包。然后用包里面的时间和服务日志的时间对应,这样就可以知道发送请求的IP地址,然后就可以知道是谁发来的请求了。我们才开始只抓了eth0上,发现没有抓到,于是我们加了loopback,终于抓到了。

下一个问题是,抓到的都是local端口的,而且端口号不固定。我们的猜测是这些请求是由一些临时的进程从随机的端口发送过来的,所以我们也没有办法找到具体是谁发送了这个进程。

下一步,我们写了一个简单的ebpf的脚本,这个脚本可以告诉我们哪个进程创建了tcp链接。于是我们就找到了process的名字,叫StatusCheck(). 然后我们进行了一番推测,觉得这个应该是容器组用来给服务做健康测试的。于是我们就去问了容器组。

最后的结论是:我们用了一个很老的健康测试的协议(framed)。但是在server端只支持新的协议类型了(header)。所以才会有这样的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值