在网络出现延迟的情况下,即使ACK延迟大约32毫秒,TCP发送缓冲区也会变满,即使在5-10分钟后也不会清除。
这里有什么问题? 有什么方法可以检查当前的TCP发送缓冲区状态,这样我可以在缓冲区满了时停止传出流量吗? 任何TCP配置我应该小心吗?
它发生在openldap2.4堆栈中。 提前谢谢。
答案 0 :(得分:0)
有什么方法可以检查当前TCP发送缓冲区的状态,以便在缓冲区变满时可以停止传出流量?
如果发送缓冲区已满,它将自动停止发送:如果发送缓冲区已满,则发送/写入将阻塞(阻塞套接字)或失败(非阻塞套接字)。如果您想提前停止,请使用setsockopt(..., SO_SNDBUF,...)
减小缓冲区
– Steffen Ullrich
答案 1 :(得分:0)
要在Linux上检查TCP发送和接收队列,请使用block.id
(sockstat)命令[man page]。
{{ forloop.counter }}
如果知道您感兴趣的TCP端口号,则可以对其进行过滤以方便查看,例如:
ss
或
ss -tn