在我的申請,我發現我的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