--- title: "限流搜索线程池大小配置" date: 2026-02-16 lastmod: 2026-02-16 description: "thread_pool.search_throttled.size 配置项用于控制限流搜索线程池的线程数量。" tags: ["线程池", "限流搜索", "性能保护", "ThreadPool"] summary: "配置项作用 # thread_pool.search_throttled.size 配置项用于控制限流搜索线程池的线程数量。 当索引被标记为 index.search.throttled=true 时,该索引的搜索请求会被路由到此线程池处理。 配置项属性 # 配置路径: thread_pool.search_throttled.size 数据类型: Integer(整数) 默认值: 1 是否可选: 是 作用域: NodeScope(节点级别) 动态更新: 是(可以动态更新,无需重启) 配置项详解 # 工作机制 # 限流搜索机制 索引设置 search.throttled=true: │ ├── 搜索请求到达 ├── 路由到 search_throttled 线程池 ├── 单线程处理 (size=1) │ ├── 同时只处理 1 个请求 │ ├── 其他请求在队列等待 │ └── 防止资源过度消耗 └── 保护系统资源 使用场景: ├── 后台索引 ├── 历史数据索引 ├── 低优先级搜索 ├── 批量查询 └-- 资源保护 与普通 search 线程池的区别 # 两个搜索线程池对比: search (普通搜索): ├── 线程数: (CPU × 3) / 2 + 1 ├── 队列: 1000 ├── 用途: 正常搜索请求 ├-- 优先级: 高 search_throttled (限流搜索): ├── 线程数: 1 (默认) ├── 队列: 100 ├── 用途: 限流索引搜索 ├-- 优先级: 低 资源保护: ├── 限流搜索不会抢占资源 ├── 保证正常搜索性能 ├── 防止后台任务影响 └-- 系统稳定性 ✅ 配置建议 # 默认配置(推荐) # thread_pool: search_throttled: size: 1 # 默认值 建议: 使用默认值,确保限流效果。" --- ## 配置项作用 `thread_pool.search_throttled.size` 配置项用于控制**限流搜索线程池的线程数量**。 当索引被标记为 `index.search.throttled=true` 时,该索引的搜索请求会被路由到此线程池处理。 ## 配置项属性 - **配置路径**: `thread_pool.search_throttled.size` - **数据类型**: `Integer`(整数) - **默认值**: `1` - **是否可选**: 是 - **作用域**: NodeScope(节点级别) - **动态更新**: 是(可以动态更新,无需重启) ## 配置项详解 ## 工作机制 ``` 限流搜索机制 索引设置 search.throttled=true: │ ├── 搜索请求到达 ├── 路由到 search_throttled 线程池 ├── 单线程处理 (size=1) │ ├── 同时只处理 1 个请求 │ ├── 其他请求在队列等待 │ └── 防止资源过度消耗 └── 保护系统资源 使用场景: ├── 后台索引 ├── 历史数据索引 ├── 低优先级搜索 ├── 批量查询 └-- 资源保护 ``` ## 与普通 search 线程池的区别 ``` 两个搜索线程池对比: search (普通搜索): ├── 线程数: (CPU × 3) / 2 + 1 ├── 队列: 1000 ├── 用途: 正常搜索请求 ├-- 优先级: 高 search_throttled (限流搜索): ├── 线程数: 1 (默认) ├── 队列: 100 ├── 用途: 限流索引搜索 ├-- 优先级: 低 资源保护: ├── 限流搜索不会抢占资源 ├── 保证正常搜索性能 ├── 防止后台任务影响 └-- 系统稳定性 ✅ ``` ## 配置建议 ## 默认配置(推荐) ```yaml thread_pool: search_throttled: size: 1 # 默认值 ``` **建议**: 使用默认值,确保限流效果。 ## 增加限流容量 ```yaml thread_pool: search_throttled: size: 2 ``` **建议**: 需要处理更多限流搜索时使用。 ## 动态更新 ```json PUT /_cluster/settings { "transient": { "thread_pool.search_throttled.size": 2 } } ``` ## 代码示例 ## 设置索引限流 ```json PUT /my_index/_settings { "index.search.throttled": true } ``` ## 搜索限流索引 ```json GET /my_index/_search { "query": { "match_all": {} } } ``` ## 查看线程池状态 ```bash GET /_cat/thread_pool/search_throttled?v ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `search_throttled.size` | 线程池大小 | 1 | | `search_throttled.queue_size` | 队列大小 | 100 | ## 注意事项 1. **默认值**: 默认值为 `1`,推荐保持。 2. **动态更新**: 支持动态更新。 3. **索引设置**: 需要设置 `index.search.throttled=true` 才生效。 4. **资源保护**: 主要目的是保护系统资源。 5. **队列较小**: 队列只有 100,比普通搜索小。 6. **适用场景**: 后台任务、历史数据搜索。