代码之家  ›  专栏  ›  技术社区  ›  zzxyz

nginx(1.1.19)TCP节点的套接字级配置

  •  0
  • zzxyz  · 技术社区  · 6 年前

    我很好奇 https://github.com/nginx/nginx/blob/master/src/core/ngx_connection.c

    具体来说,838号线 ngx_configure_listening_sockets() 以下内容:

    #if 0
              if (1) {
                  int tcp_nodelay = 1;
    
                  if (setsockopt(ls[i].fd, IPPROTO_TCP, TCP_NODELAY,
                             (const void *) &tcp_nodelay, sizeof(int))
                      == -1) //old-the current code calls an internal function to do this
                  {
                      ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_socket_errno,
                                    "setsockopt(TCP_NODELAY) %V failed, ignored",
                                    &ls[i].addr_text);
                  }
              }
      #endif
    

    使用 getsockopt ,我确实能够确定 accept 插座有 TCP_NODELAY 准备好了。删除预处理器块修复了这个问题。但为什么会有呢?如果打算稍后显式地配置接受的套接字,我就无法确定这是在哪里发生的。

    此应用程序在调用send之前生成完整的响应,因此传统的做法是禁用nagle(enable TCP协议 ),但是 *我想要么是 对的 使能方式 TCP协议 或者nginx有很好的理由不启用它。*

    我说得对吗?如果是,是哪一个?

    (据记录,这个问题主要涉及

    0 回复  |  直到 6 年前