我在网上仔细阅读了Apache httpd手册,并遇到了启用它的指令。在手册页中找到以下内容的描述tcp
:
TCP_DEFER_ACCEPT (since Linux 2.4)
Allow a listener to be awakened only when data arrives on the
socket. Takes an integer value (seconds), this can bound the
maximum number of attempts TCP will make to complete the
connection. This option should not be used in code intended
to be portable.
然后我找到了这篇文章,但是我仍然不清楚这对哪种工作负载有用。我假设如果httpd
有一个专门用于此的选项,则它必须与Web服务器有关。我还从事实出发,假设这是一个选择,而不仅仅是httpd
网络连接的方式,在某些情况下,您需要它,而在其他情况下则不需要。
即使阅读了这篇文章,我也不清楚等待三种方式握手完成的好处。确保httpd
在握手仍在进行时不必这样做来交换相关实例似乎是有利的,而不是在形成连接后可能引起该延迟。
对于本文而言,在我看来,无论TCP_DEFER_ACCEPT
套接字的状态如何,您仍将需要四个数据包(分别是握手和数据)。我不知道他们如何将计数减少到三,也不知道如何提供有意义的增强。
所以我的问题基本上是:这只是一个过时的选择,还是该选项的实际用例?