记一次linux 服务器丢包故障排查

本文记录了一次排查Linux服务器在公司网络环境下出现HTTP请求超时、连接pending的故障过程。通过分析发现,问题源于TCP的PAWS机制和TIME_WAIT状态,导致NAT设备后的不同客户端连接被错误丢弃。关闭tcp_tw_recycle参数后,问题得到解决,强调了深入理解底层网络知识的重要性。
摘要由CSDN通过智能技术生成

  开发联调过程中,使用到了测试环境。测试环境部署在单独的服务器上,由单独的域名访问。但相同的代码和环境,生产环境的服务能够正常访问,而测试环境api经常出现访问超时,一直处在pending状态,而在服务端无论是nginx还是应用层的log都难觅踪影。

  有意思的是,这个现象只有在使用公司网络访问测试域名才会出现。并且复现并没有规律,与具体服务api无关,往往是出现连续几个请求pending,一段时间后恢复。同一时间用云服务进行压测,并没有出现不可用。

  因此,一开始我就一口咬定是公司网络的问题,加上公司的网络环境确实很差劲。但同一个时间,公司的网络访问其他域名的服务一直正常,狠狠的打了脸。首先还是考虑是服务本身的问题,排查了负载情况,重新部署,分离了多个测试服务。但依旧没有丝毫改善。

  推翻了错误的假设后,一时间没有什么思路,决定首先复现这个问题。在本地通过公司网络和ECS不断压测,有大概5%的请求复现了这个问题。而服务器确实没有接收到请求,可以断定不是应用层的问题。

  首先怀疑是DNS的问题,用ping和traceroute测试后否定这个假设。下一步通过httpstat工具分析请求的每步耗时。终于有蛛丝马迹,tcp连接建立的时间高达67000ms。问题就出在tcp连接上。


  接下来通过tcpdump在服务端进行定位,但由于请求很多,并没有找到有用的信息,又陷入了僵局。在网上看了大量的资料,幸运地看到了一篇文章,https://www.sdnlab.com/17530.html。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值