创建一个将侦听积压设置为最小的TCP套接字作为速率限制新传入连接的方式是否天真?有问题的服务器工作负载在任何时候都不会期望有很多新连接,但是会花费大量时间来维护长期开放的持久性连接。似乎新的传入连接不会影响已建立的连接,尽管我一直无法在任何文本中找到任何明确的答案。失败的新传入连接是否有可能在服务器及其接收的数据包上造成某种TCP流量拥塞,或者它们丢弃的速度足够快,从而对任何缓冲区或网络堆栈的其他部分都没有影响?
具体来说,使用的平台是Linux,尽管在不同的操作系统中可能会以不同的方式进行处理,但我希望它们的行为大致相同。
编辑“我”的意思是,积压不会影响已建立的连接,尽管我确实知道Linux在Windows发送重置时会丢弃它们。
是否listen()积压会影响已建立的TCP连接?
它accept(),
仅通过限制可以存在的此类连接的数量来影响服务器尚未接受的已建立连接。
创建一个将侦听积压设置为最小的TCP套接字作为速率限制新传入连接的方式是否天真?
它所要做的就是不必要地使某些连接的客户端失败。他们将无法获得任何服务,直到您的服务器无论如何都可以使用它,并且一旦积压队列填满,它们无论如何都将受到您的服务代码的速率限制。没有特别的理由可以缩短队列,从而产生任何有益的效果。这个想法的另一个问题是,无法轻易确定实际的最小值,或者您是否成功将其设置为积压队列长度。
似乎新的传入连接不会影响已建立的连接,尽管我一直无法在任何文本中找到任何明确的答案。
那是对的。没有理由为什么它应该影响他们:这就是为什么你不会找到它写在任何地方,任何超过一个事实,即月亮的相位并不影响它的。
失败的新传入连接是否有可能在服务器及其接收到的数据包上造成某种TCP流量拥塞
不。
还是它们掉落的速度足够快,以至于对任何缓冲区或网络堆栈的其他部分都没有影响?
他们没有被丢弃。如果它们不适合积压队列,则根本不会创建它们。因此,他们在服务器上的资源消耗为零。
具体来说,使用的平台是Linux,尽管在不同的操作系统中可能会以不同的方式进行处理,但我希望它们的行为大致相同。
他们没有。在Windows上,当积压队列已满时,传入连接会导致发出RST。在其他平台上,它只是被忽略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句