Sun Java System Message Queue 3.7 UR1 管理指南

nodelay

nodelay 属性影响给定协议的 Nagle 算法(TCP/IP 上的 TCP_NODELAY 套接字级选项的值)。Nagle 算法用于提高使用慢速连接(例如广域网 (Wide-area Network, WAN))的系统上的 TCP 性能。

如果使用了此算法,TCP 将通过把多个数据捆绑为较大的包来尝试防止将多个小块数据发送到远程系统。如果写入套接字中的数据没有填满需要的缓冲区大小,协议将延迟发送包,直到缓冲区被填满,或者经过了特定的延迟时间为止。填满了缓冲区或者发生了超时后,包将被发送。

对于大多数消息传送应用程序,如果包发送过程中没有延迟(Nagle 算法未启用),则性能是最佳的。这是因为客户端与代理之间的大多数交互都是请求/响应交互:客户端向代理发送数据包,并等待响应。例如,典型的交互包括:

对于这些交互,大多数包都比缓冲区大小要小。这意味着如果使用 Nagle 算法,代理会在向使用方发送响应之前延迟几毫秒。

但是,在连接较慢以及不需要代理响应的情况下,Nagle 算法可以提高性能。例如,客户端发送非持久性消息或者客户端确认未被代理确认(DUPS_OK_ACKNOWLEDGE 会话)就属于这样的情况。