--- title: "HTTP TCP NoDelay 配置(已弃用)" date: 2026-02-03 lastmod: 2026-02-03 description: "http.tcp_no_delay 配置项用于控制是否禁用 TCP Nagle 算法(已弃用,请使用 http.tcp.no_delay)。" tags: ["HTTP", "TCP", "NoDelay", "已弃用"] summary: "配置项作用 # http.tcp_no_delay 配置项用于控制是否禁用 TCP Nagle 算法。 ⚠️ 此配置已被弃用,请使用新版配置 http.tcp.no_delay。 配置项属性 # 配置路径: http.tcp_no_delay 数据类型: Boolean(布尔值) 默认值: true 是否可选: 是 作用域: NodeScope(节点级别) 弃用状态: ⚠️ 已弃用 配置项详解 # 弃用说明 # 配置迁移路径 旧版配置(已弃用): http: tcp_no_delay: true │ ↓ 仍然有效,但不推荐 │ ↓ 新版配置(推荐): http: tcp: no_delay: true 工作机制 # Nagle 算法对比 启用 Nagle 算法 (tcp_no_delay = false): 小数据包: ┌─────┐ ┌─────┐ ┌─────┐ │ 50B │ │ 50B │ │ 50B │ └─────┘ └─────┘ └─────┘ ↓ ↓ ↓ └───────┴───────┘ ↓ 缓冲区累积数据 ↓ 等待达到一定大小 或收到 ACK ↓ ┌──────────────────┐ │ 150B 数据包 │ 发送 └──────────────────┘ 优点: 减少网络包数量,提高利用率 缺点: 增加延迟(最多 40-200ms) 禁用 Nagle 算法 (tcp_no_delay = true,默认): 小数据包: ┌─────┐ ┌─────┐ ┌─────┐ │ 50B │ │ 50B │ │ 50B │ └─────┘ └─────┘ └─────┘ ↓ ↓ ↓ 立即 立即 立即 发送 发送 发送 优点: 低延迟,立即响应 缺点: 更多网络包,可能降低利用率 配置建议 # ⚠️ 重要提示 # 此配置项已被标记为弃用,请迁移到新版配置 http." --- ## 配置项作用 `http.tcp_no_delay` 配置项用于控制**是否禁用 TCP Nagle 算法**。 ⚠️ **此配置已被弃用**,请使用新版配置 `http.tcp.no_delay`。 ## 配置项属性 - **配置路径**: `http.tcp_no_delay` - **数据类型**: `Boolean`(布尔值) - **默认值**: `true` - **是否可选**: 是 - **作用域**: NodeScope(节点级别) - **弃用状态**: ⚠️ **已弃用** ## 配置项详解 ## 弃用说明 ``` 配置迁移路径 旧版配置(已弃用): http: tcp_no_delay: true │ ↓ 仍然有效,但不推荐 │ ↓ 新版配置(推荐): http: tcp: no_delay: true ``` ## 工作机制 ``` Nagle 算法对比 启用 Nagle 算法 (tcp_no_delay = false): 小数据包: ┌─────┐ ┌─────┐ ┌─────┐ │ 50B │ │ 50B │ │ 50B │ └─────┘ └─────┘ └─────┘ ↓ ↓ ↓ └───────┴───────┘ ↓ 缓冲区累积数据 ↓ 等待达到一定大小 或收到 ACK ↓ ┌──────────────────┐ │ 150B 数据包 │ 发送 └──────────────────┘ 优点: 减少网络包数量,提高利用率 缺点: 增加延迟(最多 40-200ms) 禁用 Nagle 算法 (tcp_no_delay = true,默认): 小数据包: ┌─────┐ ┌─────┐ ┌─────┐ │ 50B │ │ 50B │ │ 50B │ └─────┘ └─────┘ └─────┘ ↓ ↓ ↓ 立即 立即 立即 发送 发送 发送 优点: 低延迟,立即响应 缺点: 更多网络包,可能降低利用率 ``` ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,请迁移到新版配置 `http.tcp.no_delay`。 ## 旧版配置(不推荐) ```yaml http: tcp_no_delay: true # 旧版配置,已弃用 ``` **建议**: 迁移到新版配置结构。 ## 新版配置(推荐) ```yaml http: tcp: no_delay: true # 新版配置,推荐使用 ``` ## 生产环境配置 ```yaml # 推荐的新版配置结构 http: tcp: no_delay: true keep_alive: true reuse_address: true ``` ## 代码示例 ## easysearch.yml 旧版配置(已弃用) ```yaml # 不推荐使用此格式 http: tcp_no_delay: true ``` ## easysearch.yml 新版配置(推荐) ```yaml # 推荐使用此格式 http: tcp: no_delay: true ``` ## 配合其他 TCP 配置(新版) ```yaml http: tcp: no_delay: true # 新版配置 keep_alive: true keep_idle: 60 keep_interval: 10 send_buffer_size: 128kb receive_buffer_size: 128kb ``` ## 相关配置 | 配置项 | 状态 | 作用 | 默认值 | |--------|------|------|--------| | `http.tcp_no_delay` | ⚠️ 已弃用 | 旧版 NoDelay 配置 | true | | `http.tcp.no_delay` | ✅ 推荐 | 新版 NoDelay 配置 | true | | `http.tcp.keep_alive` | ✅ 有效 | 是否启用 Keep-Alive | true | ## 迁移指南 ## 从旧版配置迁移 ``` 步骤 1: 备份现有配置 cp easysearch.yml easysearch.yml.bak 步骤 2: 更新配置格式 旧格式: http: tcp_no_delay: true tcp_keep_alive: true 新格式: http: tcp: no_delay: true keep_alive: true 步骤 3: 验证配置 确保配置语法正确 步骤 4: 重启节点 使新配置生效 步骤 5: 验证功能 确认 HTTP 服务正常工作 ``` ## 配置兼容性 ```java // 代码中的兼容处理 public static final Setting OLD_SETTING_HTTP_TCP_NO_DELAY = boolSetting("http.tcp_no_delay", NetworkService.TCP_NO_DELAY, Setting.Property.NodeScope, Setting.Property.Deprecated); public static final Setting SETTING_HTTP_TCP_NO_DELAY = boolSetting("http.tcp.no_delay", OLD_SETTING_HTTP_TCP_NO_DELAY, Setting.Property.NodeScope); // 新配置会回退到旧配置的值 // 确保向后兼容性 ``` ## 使用场景 ## 所有场景都应使用新版配置 - **新部署**: 直接使用 `http.tcp.no_delay` - **现有部署**: 迁移到新版配置结构 - **配置维护**: 统一使用新版配置 ## 注意事项 1. **已弃用**: 此配置已被标记为弃用,请迁移到 `http.tcp.no_delay`。 2. **向后兼容**: 旧配置仍然有效,但不推荐使用。 3. **配置结构**: 新版配置使用嵌套结构 `http.tcp.*`。 4. **功能相同**: 新旧配置的功能完全相同。 5. **迁移建议**: 建议在下次维护窗口期进行迁移。 6. **文档更新**: 更新相关文档和运维手册。 7. **动态更新**: 此配置不支持动态更新,修改后需要重启节点。 8. **配置验证**: 迁移后验证配置语法正确性。 9. **版本兼容**: 确保当前版本支持新版配置。 10. **统一管理**: 建议统一所有 TCP 相关配置到 `http.tcp.*` 结构下。