我有一个假设:有时TCP连接到达的速度比我的服务器可以到达的速度快accept()
。他们排队直到队列溢出,然后出现问题。
我如何确认这种情况正在发生?
我可以监视接受队列的长度或溢出次数吗?某处有柜台吗?
netstat
仅显示发送和接收队列的长度,这与接受队列的长度不同。
man netstat | less +/Flags
netstat
似乎根本没有显示Flags
。从一个小的测试,它看起来像连接显示为ESTABLISHED
中netstat
,即使我尝试打开一个过程,它的连接listen()
,但从来没有accept()
。
SYN_RECV
。除此之外,没有其他队列。我想可以告诉内核由于过多的半开连接而以某种方式记录丢弃的数据包,但是自从我研究与Linux联网以来已有十多年了,所以我不知道该怎么做。附带说明:您不是在等待accept()
完成其工作,而是在等待ACK
s从连接的主机到达以完成连接。
netstat
。