📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

network.tcp.connect_timeout 配置项用于控制建立 TCP 连接时的最大等待时间

此配置决定了 Easysearch 在等待 TCP 连接建立完成时最多等待多长时间,超时后将放弃连接尝试。

配置项属性 #

  • 配置路径: network.tcp.connect_timeout
  • 数据类型: TimeValue(时间值)
  • 默认值: 30s(30秒)
  • 最小值: 0(不能为负数)
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 否(需要重启节点生效)
  • 废弃状态: 已废弃,建议使用 transport.connect_timeout

配置项详解 #

工作机制 #

TCP 连接建立流程

发起连接:
├── 创建 Socket
├── 发起 TCP 三次握手
├── 等待连接建立
└── 超时控制


connect_timeout = 30s:

00:00 ──→ 发起连接
00:10 ──→ 等待中...
00:20 ──→ 等待中...
00:29 ──→ 等待中...
00:30 ──→ 超时 ❌
       抛出 ConnectTimeoutException


connect_timeout = 5s:

00:00 ──→ 发起连接
00:03 ──→ 连接成功 ✅

超时处理 #

连接超时的处理

连接建立中:
├── SYN 包发送
├── 等待 SYN-ACK
├── 等待 ACK
└── 计时器运行


超时触发:
├── 达到 connect_timeout
├── 未收到 SYN-ACK
├── 连接失败
└── 抛出异常


重试策略:
├── 某些场景会自动重试
├── 使用新的连接尝试
└── 仍受超时限制

配置项状态 #

配置项演进

旧配置 (已废弃):
network.tcp.connect_timeout
├── 位置: NetworkService
├── 状态: Deprecated
└── 不推荐使用


当前推荐:
transport.tcp.connect_timeout
├── 位置: TransportSettings
├── 状态: Active
└── 推荐使用


新配置 (推荐):
transport.connect_timeout
├── 位置: TransportSettings
├── 状态: Active
└── 最新推荐

配置建议 #

生产环境(推荐新配置) #

transport:
  connect_timeout: 30s  # 使用新配置

建议: 使用新的 transport.connect_timeout 配置。

高延迟网络 #

transport:
  connect_timeout: 60s  # 增加超时

建议: 增加到 60-120s。网络延迟高时使用。

快速失败 #

transport:
  connect_timeout: 10s  # 减少超时

建议: 减少到 5-15s。需要快速失败时使用。

旧配置(不推荐) #

network:
  tcp:
    connect_timeout: 30s  # 已废弃

注意: 此配置已废弃,应使用 transport.connect_timeout

代码示例 #

推荐配置(新方式) #

transport:
  connect_timeout: 30s

高延迟网络配置 #

transport:
  connect_timeout: 60s
  compression: true

快速失败配置 #

transport:
  connect_timeout: 10s

完整传输配置 #

transport:
  connect_timeout: 30s
  tcp:
    keep_alive: true
    keep_idle: 300
    keep_interval: 300
    keep_count: -1

相关配置 #

配置项作用默认值
transport.connect_timeout连接超时(推荐)30s
network.tcp.connect_timeout连接超时(已废弃)30s
transport.tcp.keep_aliveTCP keepalivetrue

性能影响分析 #

connect_timeout 设置优点缺点
5-10s快速失败正常高延迟网络会失败
30s(默认)平衡等待时间标准设置
60s容忍高延迟故障检测慢
120s+最大容忍检测很慢

故障检测时间 #

不同超时的故障检测

假设目标节点宕机

connect_timeout = 10s:
00:00 ──→ 尝试连接
00:10 ──── 超时失败 ❌
检测时间: 10 秒 ✅


connect_timeout = 30s (默认):
00:00 ──→ 尝试连接
00:30 ─── 超时失败 ❌
检测时间: 30 秒


connect_timeout = 60s:
00:00 ──→ 尝试连接
01:00 ─── 超时失败 ❌
检测时间: 60 秒

使用场景 #

推荐使用默认值的场景 #

  • 标准网络: 正常的局域网环境
  • 稳定环境: 网络质量稳定
  • 生产环境: 大多数生产环境

推荐增加超时的场景 #

  • 高延迟网络: 跨区域、跨云服务商
  • 不稳定网络: 网络质量不稳定
  • 负载均衡: 经过多层代理
  • 远程连接: 地理位置分散

推荐减少超时的场景 #

  • 本地网络: 同机房、同机架
  • 快速故障检测: 需要快速发现故障
  • 低延迟要求: 对延迟敏感
  • 自动重试: 有重试机制

与其他超时的配合 #

各种超时配置的配合

连接阶段:
connect_timeout: 30s
├── 控制连接建立时间
└── 超时后放弃连接


请求阶段:
timeout: 默认不超时
├── 控制请求处理时间
└── 可能比 connect_timeout 更长


协同工作:
连接建立 → 请求处理 → 响应返回
   ↓          ↓          ↓
conn_timeout timeout   timeout

注意事项 #

  1. 已废弃: 此配置已废弃,应使用 transport.connect_timeout

  2. 需要重启: 修改此配置需要重启节点。

  3. 时间单位: 支持秒、毫秒等单位。

  4. 网络延迟: 应根据网络延迟调整。

  5. 快速失败: 越小越快发现故障,但可能误判。

  6. 耐心等待: 越大越容忍延迟,但故障检测慢。

  7. 负载均衡: 负载均衡场景可能需要更长超时。

  8. 监控建议: 监控连接失败率和超时频率。

  9. 测试验证: 配置变更后应验证连接效果。

  10. 迁移建议: 建议迁移到新配置 transport.connect_timeout

配置迁移 #

从旧配置迁移到新配置

旧配置:
network:
  tcp:
    connect_timeout: 30s


新配置 (推荐):
transport:
  connect_timeout: 30s


迁移步骤:
1. 更新配置文件
2. 使用新的配置路径
3. 删除旧的配置
4. 重启节点
5. 验证连接