配置项作用 #
discovery.zen.ping.unicast.concurrent_connects 配置项用于控制种子主机解析时的最大并发连接数。
当节点解析配置的种子主机列表时,此配置决定了同时可以发起多少个并发连接。
配置项属性 #
- 配置路径:
discovery.zen.ping.unicast.concurrent_connects - 数据类型:
integer - 默认值:
10 - 最小值:
0 - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
种子主机解析流程
配置的种子主机列表:
- node1.example.com:9300
- node2.example.com:9300
- node3.example.com:9300
- ...
- node50.example.com:9300
并发连接数 = 10
开始解析
│
↓
创建线程池 (0 到 concurrent_connects)
│
├──────── 并发连接 1-10 ──→ node1
├──────── 并发连接 11-20 ─→ node2
├──────── 并发连接 21-30 ─→ node3
└──────── ... 继续处理剩余节点
线程池行为 #
// 可扩展线程池
executorService = EsExecutors.newScaling(
"unicast_configured_hosts_resolver",
0, // 最小线程数
concurrentConnects, // 最大线程数(配置值)
60, // 空闲 60 秒后收缩
TimeUnit.SECONDS,
threadFactory
);
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,推荐使用新的 discovery.seed_resolver.max_concurrent_resolvers 配置。
生产环境(默认) #
discovery.zen.ping.unicast.concurrent_connects: 10
建议: 保持默认值 10。适用于大多数生产环境。
大量种子节点 #
discovery.zen.ping.unicast.concurrent_connects: 20
建议: 增加到 15-20。当配置了大量种子节点时使用。
资源受限环境 #
discovery.zen.ping.unicast.concurrent_connects: 5
建议: 减少到 3-5。当系统资源有限时使用。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
ping:
unicast:
concurrent_connects: 10 # 默认值
配合种子主机配置 #
discovery:
zen:
ping:
unicast:
hosts: ["node1:9300", "node2:9300", "node3:9300"]
concurrent_connects: 10
推荐的替代配置 #
discovery:
seed_resolver:
max_concurrent_resolvers: 10 # 新配置(推荐)
相关配置 #
| 配置项 | 状态 | 作用 | 默认值 |
|---|---|---|---|
discovery.zen.ping.unicast.concurrent_connects | ⚠️ 已弃用 | 旧版并发连接配置 | 10 |
discovery.seed_resolver.max_concurrent_resolvers | ✅ 推荐 | 新版并发解析器配置 | 10 |
discovery.zen.ping.unicast.hosts | ⚠️ 已弃用 | 旧版种子主机配置 | - |
配置冲突检查 #
// 不能同时配置新旧配置
if (LEGACY_CONCURRENT_CONNECTS_SETTING.exists(settings)) {
if (MAX_CONCURRENT_RESOLVERS_SETTING.exists(settings)) {
throw new IllegalArgumentException(
"it is forbidden to set both [" +
"discovery.seed_resolver.max_concurrent_resolvers] and [" +
"discovery.zen.ping.unicast.concurrent_connects]"
);
}
}
性能影响分析 #
| concurrent_connects 设置 | 优点 | 缺点 |
|---|---|---|
| 较小(3-5) | 资源消耗少 | 解析速度慢 |
| 中等(10) | 平衡速度和资源 | 标准设置 |
| 较大(20+) | 解析速度快 | 资源消耗高 |
解析时间对比 #
假设有 50 个种子节点,单个连接耗时 100ms
concurrent_connects = 5:
轮次 = 50 / 5 = 10 轮
总时间 ≈ 10 × 100ms = 1 秒
concurrent_connects = 10:
轮次 = 50 / 10 = 5 轮
总时间 ≈ 5 × 100ms = 0.5 秒
concurrent_connects = 25:
轮次 = 50 / 25 = 2 轮
总时间 ≈ 2 × 100ms = 0.2 秒
使用场景 #
推荐保持默认的场景 #
- 标准集群: 种子节点数量适中
- 稳定网络: 连接建立时间正常
- 资源充足: 有足够的网络和线程资源
推荐增加的场景 #
- 大量种子节点: 配置了 20+ 个种子节点
- 高延迟网络: 单个连接建立较慢
- **快速启动: 需要快速完成集群发现
推荐减少的场景 #
- 资源受限: CPU 或网络资源有限
- 少量种子节点: 只有几个种子节点
- 连接限制: 网络设备有连接数限制
注意事项 #
已弃用: 此配置已被标记为弃用,建议迁移到新配置。
不能同时配置: 不能同时设置旧版和新版配置,会报错。
线程池收缩: 空闲 60 秒后线程池会自动收缩,释放资源。
动态范围: 线程池从 0 到配置值动态调整。
网络限制: 考虑网络设备的最大连接数限制。
监控建议: 监控种子主机解析的完成时间和资源使用。
测试验证: 在生产环境使用前,在测试环境中验证配置效果。
DNS 解析: 如果使用主机名而不是 IP,还需要考虑 DNS 解析时间。





