配置项作用 #
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_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
注意事项 #
已废弃: 此配置已废弃,应使用
transport.connect_timeout。需要重启: 修改此配置需要重启节点。
时间单位: 支持秒、毫秒等单位。
网络延迟: 应根据网络延迟调整。
快速失败: 越小越快发现故障,但可能误判。
耐心等待: 越大越容忍延迟,但故障检测慢。
负载均衡: 负载均衡场景可能需要更长超时。
监控建议: 监控连接失败率和超时频率。
测试验证: 配置变更后应验证连接效果。
迁移建议: 建议迁移到新配置
transport.connect_timeout。
配置迁移 #
从旧配置迁移到新配置
旧配置:
network:
tcp:
connect_timeout: 30s
新配置 (推荐):
transport:
connect_timeout: 30s
迁移步骤:
1. 更新配置文件
2. 使用新的配置路径
3. 删除旧的配置
4. 重启节点
5. 验证连接





