为什么有人会关闭Nagle的算法?

时间:2012-03-08 08:49:45

标签: javascript node.js tcp redis

来自节点redis docs

  

socket_nodelay:默认为true。是否调用setNoDelay()   TCP流,它禁用底层的Nagle算法   插座。将此选项设置为false可能会导致额外的操作   吞吐量以更多延迟为代价。大多数应用程序都需要   这设置为真。

为什么我要关闭Nagle的算法?

1 个答案:

答案 0 :(得分:11)

当您担心延迟时,您会想要关闭Nagle算法。我对该算法的理解是它延迟发送数据,直到有合理的发送量。这反过来减少了流的协议开销,因为在单个数据包中发送更多数据(即使用单个报头)。

关闭Nagle算法后,想法是数据立即由协议栈发送。

它是在网络资源受到更多限制的当天设计的,因此减少开销对于便利的交付更为重要。然而,如今通常更快的互连和更低的延迟要求,它变得不那么重要了。 (想想视频流!)