QA_TCP Connection time out
问题描述
同时购买,配置相同,跑的服务相同,腾讯云虚拟机
去telnet MQ的61616端口
- 一个连接超时
- 一个拒绝连接
而项目使用的框架对MQ的健康检查,会判断TCP连接MQ 61616的端口的状态,只认为两种状态时正常的 拒绝连接 正常连接(MQ是集群)
问题处理
- 两个服务器安全组完全相同,排除安全组问题
- 防火墙和selinux都是关闭状态
- 连接超时的机器如果服务端监听了61616端口,就可以telnet通
- 联系腾讯的人员最终确定问题
相同母机上的子机服务对应端口未开启使用telnet探测端口会被防火墙拦截导致返回连接超时
这是母机上做的策略 只要服务对应端口正常开启 telnet就是通的 不影响客户使用 - 处理方法
这个母机的防火墙拦是不能开放的,
关于telnet出现连接超时的原因是这两台子机同时放在一台母机上面会出现这种情况。
如果2台子机放到不同的母机上面就会显示拒绝连接。
我们可以通过放置群组可以把cvm进行分散,详细参考:https://cloud.tencent.com/document/product/213/15486
存量机器的如有受上述问题的影响,我们可以选个时间进行迁移? - 只能将服务迁移到不同母机的虚拟机上,可通过放置群组来实现
知识点
知识点原文:https://typecodes.com/linux/tcpconnectiontimedout.html
Connection refused
使用telnet来检查tcp链路时,如果遇到”Connection refused”的错误,那么表示从本地客户端到目标IP地址的路由是正常的,但是该目标端口没有进程在监听,然后服务端拒绝掉了连接。
一个成功的tcp链接将会看到Syn,Syn-Ack,Ack,这也就是我们预期的TCP三次握手。当使用tcpdump或wireshark抓包工具来探测发送过来的请求报文包时,Connection refused将会看到Syn,Rst。
Connection timed out
如果telnet的时候,TCP路由不正常,那么会得到一个Connection timed out的错误。”Couldn’t connect”原因有很多,可能是服务器无法ping通,可能是服务器(防火墙等)丢弃了该请求报文包,也可能是服务器应答太慢,又或者存在间歇性的问题(这种情况很难从日志文件中排查问题)。