生产环境遭遇tcp第三次挥手出现大量retransmission(求助,可付费)。

环境:

操作系统:centos7.x, spring boot(2.0.3.RELEASE)应用, JDk1.8,restful风格。
应用都在一台服务器上,采用docker compose部署。
开启了防火墙,iptables。

现象:

现场反应生产环境出现了很多间断性支付失败,查看日志发现应用之间相互调用出现了很多connection reset的错误。查看tcp链接的状态发现处于CLOSE_WAIT和FIN_WAIT2的状态各达到了12w。入下图。

问题

查看其它现场发现很多都有这个半关闭的问题,只不过没爆发出来。通过对比多个现场的环境,发现开启了防火墙的都有这个问题,没开防火墙的正常。
此外,通过抓包发现,服务器主动发起的关闭,但是客户端发送的第三次挥手信号没有送达到服务端,且第二次挥手与第三次挥手时间间隔比较大。


解决

通过手动重启服务器释放socket占用的资源,并且关闭了防火墙。没有出现大量的半关闭的链接。

求助

这样固然解决了问题,但是并没有搞清楚病灶在哪里,故而求助各位大神。企业项目,可付费。

阅读 1.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏