使用节点js,我每隔60秒轮询一次远程连接并尽可能重用现有的开放套接字,否则重新连接。
远程端通常会在50秒后关闭套接字(发送我假设的FIN)并使用end
或socket.close()
处理socket.destroy()
事件。在这两种情况下ss -tan
都显示套接字来自ESTAB
- > LAST-ACK
Send-Q
的{{1}}。
10秒后即将到来的民意调查似乎在尝试重新连接时连接处于此状态。重新连接需要7.2s而不是通常的200ms。
有没有办法更快地关闭套接字,以便重新连接的发生速度与新连接一样快?我是否需要在系统级调整套接字处理? LAST-ACK采取这么长的时间是正常的吗?
这是在Debian测试上运行的。谢谢!
答案 0 :(得分:0)
重新连接不受先前连接的影响,除非您在客户端的本地出站端口用完。它不会导致延迟。 LAST_ACK表示您已收到FIN,发送了ACK,发送了FIN,并且正在等待回复ACK。此时应用程序无法执行任何操作:套接字已关闭,并且全部都在TCP手中。