Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104303
  • 博文数量: 24
  • 博客积分: 105
  • 博客等级: 民兵
  • 技术积分: 244
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-09 20:05
文章分类

全部博文(24)

文章存档

2015年(1)

2014年(9)

2013年(10)

2012年(4)

我的朋友

分类: 网络与安全

2015-08-10 22:44:26

最近本着变被动为主动,将事后提前到事前,开展了一些典型问题排查活动。发现了一个锁的问题,问题改了之后上设备验证。上去把自己平时录得自动化脚本一跑,哎呦我x,怎么老是5分钟断一次链路,从未出现过啊。有规律必现问题,肯定是低级问题。把现象给一个兄弟说了之后,自己又去干其他事了。

兄弟看了很久的代码说没有问题。赶紧一起把流程排查了一遍,确实没有问题。开始加打印+抓包。

加了打印发现1s一次的心跳包,接近10s内一个包都没有,之后突然上来接近10个包。
tcp抓包发现,有些tcp包出现了重传,中间还夹带了ARP报文。后面突然一个大报文,这个报文带着F的flag,表示已经close了这条连接。

结论: 1. 心跳为1s一次,期间tcp连接出现过10s左右异常,tcp协议栈无法发现,但是被应用的保活报文发现,主动关闭了该连接。
          2. tcp连接恢复的一瞬间,1s一次累积在协议栈缓冲区的报文,被tcp一次发送,从而导致远端突然接受到接近10条的报文。

怀疑有人在协议栈干坏事了,从未有问题的环境,成了一个必现问题。

如果不是被应用心跳发现tcp连接有短时间的异常,这种现象应该就是tcp粘包吧。
阅读(3870) | 评论(0) | 转发(0) |
0

上一篇:用户空间和内核空间通讯之【Netlink 下】

下一篇:没有了

给主人留下些什么吧!~~