环境:
操作系统:centos7.x, spring boot(2.0.3.RELEASE)应用, JDk1.8,restful风格。
应用都在一台服务器上,采用docker compose部署。
开启了防火墙,iptables。
现象:
现场反应生产环境出现了很多间断性支付失败,查看日志发现应用之间相互调用出现了很多connection reset的错误。查看tcp链接的状态发现处于CLOSE_WAIT和FIN_WAIT2的状态各达到了12w。入下图。
问题
查看其它现场发现很多都有这个半关闭的问题,只不过没爆发出来。通过对比多个现场的环境,发现开启了防火墙的都有这个问题,没开防火墙的正常。
此外,通过抓包发现,服务器主动发起的关闭,但是客户端发送的第三次挥手信号没有送达到服务端,且第二次挥手与第三次挥手时间间隔比较大。
解决
通过手动重启服务器释放socket占用的资源,并且关闭了防火墙。没有出现大量的半关闭的链接。
求助
这样固然解决了问题,但是并没有搞清楚病灶在哪里,故而求助各位大神。企业项目,可付费。