--- title: "TCP 连接超时配置" date: 2026-02-16 lastmod: 2026-02-16 description: "network.tcp.connect_timeout 配置项用于控制 TCP 连接建立的超时时间。" tags: ["网络", "TCP", "连接超时", "传输层"] summary: "配置项作用 # 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." --- ## 配置项作用 `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 └── 最新推荐 ``` ## 配置建议 ## 生产环境(推荐新配置) ```yaml transport: connect_timeout: 30s # 使用新配置 ``` **建议**: 使用新的 `transport.connect_timeout` 配置。 ## 高延迟网络 ```yaml transport: connect_timeout: 60s # 增加超时 ``` **建议**: 增加到 `60-120s`。网络延迟高时使用。 ## 快速失败 ```yaml transport: connect_timeout: 10s # 减少超时 ``` **建议**: 减少到 `5-15s`。需要快速失败时使用。 ## 旧配置(不推荐) ```yaml network: tcp: connect_timeout: 30s # 已废弃 ``` **注意**: 此配置已废弃,应使用 `transport.connect_timeout`。 ## 代码示例 ## 推荐配置(新方式) ```yaml transport: connect_timeout: 30s ``` ## 高延迟网络配置 ```yaml transport: connect_timeout: 60s compression: true ``` ## 快速失败配置 ```yaml transport: connect_timeout: 10s ``` ## 完整传输配置 ```yaml 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_alive` | TCP keepalive | true | ## 性能影响分析 | 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. 验证连接 ```