配置项作用 #
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。
旧版配置(不推荐) #
http:
tcp_no_delay: true # 旧版配置,已弃用
建议: 迁移到新版配置结构。
新版配置(推荐) #
http:
tcp:
no_delay: true # 新版配置,推荐使用
生产环境配置 #
# 推荐的新版配置结构
http:
tcp:
no_delay: true
keep_alive: true
reuse_address: true
代码示例 #
easysearch.yml 旧版配置(已弃用) #
# 不推荐使用此格式
http:
tcp_no_delay: true
easysearch.yml 新版配置(推荐) #
# 推荐使用此格式
http:
tcp:
no_delay: true
配合其他 TCP 配置(新版) #
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 服务正常工作
配置兼容性 #
// 代码中的兼容处理
public static final Setting<Boolean> 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<Boolean> SETTING_HTTP_TCP_NO_DELAY =
boolSetting("http.tcp.no_delay", OLD_SETTING_HTTP_TCP_NO_DELAY,
Setting.Property.NodeScope);
// 新配置会回退到旧配置的值
// 确保向后兼容性
使用场景 #
所有场景都应使用新版配置 #
- 新部署: 直接使用
http.tcp.no_delay - 现有部署: 迁移到新版配置结构
- 配置维护: 统一使用新版配置
注意事项 #
已弃用: 此配置已被标记为弃用,请迁移到
http.tcp.no_delay。向后兼容: 旧配置仍然有效,但不推荐使用。
配置结构: 新版配置使用嵌套结构
http.tcp.*。功能相同: 新旧配置的功能完全相同。
迁移建议: 建议在下次维护窗口期进行迁移。
文档更新: 更新相关文档和运维手册。
动态更新: 此配置不支持动态更新,修改后需要重启节点。
配置验证: 迁移后验证配置语法正确性。
版本兼容: 确保当前版本支持新版配置。
统一管理: 建议统一所有 TCP 相关配置到
http.tcp.*结构下。





