http请求:Error: read ECONNRESET错误排查

客户端:10.1.76.193
服务端:10.1.23.12

1、抓包

通过wireshark抓包,设置捕获包含目标主机ip的数据过滤条件,ip.addr == 10.1.23.12

成功包:success_dump.pcapng

失败包:error_dump.pcapng

也可以通过tcpdump获取,然后导入wireshark分析

tcpdump -i ens33 host 10.1.23.12 and port 8081 -n -vvv -X -w ./target.cap

2、比对分析:

成功状态下:服务端收到请求后,会给客户端发送确认收到信息ACK

 

失败状态下:

 

现象:1、成功的请求 Timestamp value 值都比较小

           2、失败的请求没收到服务端返回ACK的通知

           3、客户端补发的请求发生TCP Retransmission 连接超时异常

3、解决方式:

 修改服务器/etc/sysctl.conf文件里面的(没有就添加)

    net.ipv4.tcp_timestamps=0

    再次 抓包测试 TCP 连接没有再出现 超时

timestamp扩展:

同时开启timestamp(时间戳)和tw_recycle(快速回收),会导致在一个MSL时间内只响应timestamp递增的请求,对于时间戳较小的请求都抛弃了(不响应ack)

MSL扩展: RFC793中规定MSL为2分钟,也就是说2分钟内同一个ip的请求的时间戳要求递增,不是递增的话服务器不予响应。

参考资料:TCP Retransmission 连接超时 - 简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值