在我的申请,我发现我的send()
一个TCP连接上电话偶尔封锁。每当出现这种情况,TCP连接的Recv-Q是netstat
输出非常高:TCP连接的Recv-Q值高的原因是什么?
tcp 314238 0 10.8.8.21:47302 10.8.8.11:5672 ESTABLISHED
tcp 313276 0 10.8.8.21:47294 10.8.8.11:5672 ESTABLISHED
怎么可能会导致TCP连接的recv缓冲区被填满?它是如何导致我的呼叫无限期地挂起?
p.s.这可能也可能不相关,这个TCP连接在我的应用程序和RabbitMQ服务器之间。
的Recv缓冲器将填满,当你的应用程序不会从插座的同时阅读。但它不应该影响从您的结束发送。你能检查对面发生了什么吗? BTW这里的Recv-Q的一些有用的提示和情景和发送-Q具有非零值:http://stackoverflow.com/questions/36466744/use-of-recv-q-and-send-q – ffeast
@ffeast当然这会影响发送。 TCP将关闭接收窗口,于是发送者必须停止发送。 RFC 793. – EJP