36.2. 启用 TCP_NODELAY

当发生事件时,TCP_NODELAY 将缓冲区写入内核,且无延迟。使用 setsockopt 命令启用 TCP_NODELAY

流程

  1. 使用 setsockopt 命令启用 TCP_NODELAY

    # int one = 1;
    
    # setsockopt(descriptor, SOL_TCP, TCP_NODELAY, &one, sizeof(one));
  2. 应用其中一个 follwing 临时解决方案以防止性能下降:

    • 在内存中构建连续数据包,然后将逻辑数据包发送到使用 TCP_NODELAY 配置的套接字上的 TCP。
    • 创建一个 I/O 向量,并使用 writev 在配置了 TCP_NODELAY 的套接字上的写入v 传递给内核。