node Net.socket - 远程端发送FIN;插槽卡在LAST_ACK中

时间:2014-06-17 04:57:06

标签: node.js sockets

使用节点js,我每隔60秒轮询一次远程连接并尽可能重用现有的开放套接字,否则重新连接。

远程端通常会在50秒后关闭套接字(发送我假设的FIN)并使用endsocket.close()处理socket.destroy()事件。在这两种情况下ss -tan都显示套接字来自ESTAB - > LAST-ACK Send-Q的{​​{1}}。

10秒后即将到来的民意调查似乎在尝试重新连接时连接处于此状态。重新连接需要7.2s而不是通常的200ms。

有没有办法更快地关闭套接字,以便重新连接的发生速度与新连接一样快?我是否需要在系统级调整套接字处理? LAST-ACK采取这么长的时间是正常的吗?

这是在Debian测试上运行的。谢谢!

1 个答案:

答案 0 :(得分:0)

重新连接不受先前连接的影响,除非您在客户端的本地出站端口用完。它不会导致延迟。 LAST_ACK表示您已收到FIN,发送了ACK,发送了FIN,并且正在等待回复ACK。此时应用程序无法执行任何操作:套接字已关闭,并且全部都在TCP手中。