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

Cam*_*mel 4 javascript tcp redis node.js

从节点redis文档:

socket_nodelay:默认为true.是否在TCP流上调用setNoDelay(),这会禁用底层套接字上的Nagle算法.将此选项设置为false可能会以更多延迟为代价导致额外的吞吐量.大多数应用程序都希望此设置为true.

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

Nic*_*ick 12

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

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

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