Neo*_*ang 5 sockets netstat tcp amqp
在我的应用程序中,我发现send()
TCP 连接上的调用偶尔会被阻止。每当这种情况发生时,TCP 连接的 Recv-Q 从netstat
输出中会非常高:
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
Run Code Online (Sandbox Code Playgroud)
什么可能导致 TCP 连接的接收缓冲区被填满?它如何导致我的send()
呼叫无限期挂起?
ps 这可能相关,也可能不相关,这个 TCP 连接位于我的应用程序和 RabbitMQ 服务器之间。
Arm*_*ali -1
什么可能导致 TCP 连接的接收缓冲区被填满?它是如何导致我的 send() 调用无限期挂起的?
假设你有同一个线程调用send()
和recv()
,当它在调用中被阻塞时send()
,它自然就无法调用recv()
,接收到的数据必须排队。因此,并不是由于填充了接收缓冲区而导致send()
挂起 - 而是相反。