TCP回环连接导致的端口已占用

昨天遇到一个奇怪的问题,MQ意外挂掉后无法重启,Java抛了成吨的异常,找了找发现问题是端口已占用,本来以为是监听端口被哪个第三方服务给抢了,但是netstat后看到一个奇怪的TCP回环连接:

TCP    127.0.0.1:61616    127.0.0.1:61616    ESTABLISHED    9432

pid9432是公司的某个服务,而它的监听端口也没有61616,并且TCP连接状态是established,因此猜想可能是MQ挂掉之后它与MQ的某次尝试重连时分配到的端口刚好是61616,导致建立了一个无用的回环连接并且一直占用了这个端口。
不过这个问题算是无伤大雅,毕竟当MQ正常运行时应该是不会出现这种问题的,好奇去找了下有没有相关的资料或解释,看到了这篇文章:
Shallow Rampa - TCP Loop Connect

TCP回环连接导致的端口已占用_第1张图片
图片.png

说明得比较清楚,也印证了我的猜想,还包括一些可能场景和简单测试,有兴趣的读者可以去接着了解一下。

你可能感兴趣的:(TCP回环连接导致的端口已占用)