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

配置项作用 #

async_search.max_search_running_time 配置项限制异步搜索请求的最长运行时间。当异步搜索的运行时间超过此限制时,搜索将被自动终止,以防止长时间运行的搜索消耗过多资源。

配置项类型 #

该配置项为动态配置,可以在运行时通过集群更新 API 进行修改,无需重启节点。

默认值 #

12h(12小时)

是否必需 #

可选配置项

取值范围 #

正数时间值(如 1m、1h、24h 等)

工作原理 #

异步搜索允许长时间运行的查询在后台执行。该配置项作为安全机制,防止搜索无限期运行:

  1. 运行时间计算:从搜索开始执行到当前时间的持续时间
  2. 超时检查:活跃上下文清理器定期检查运行时间
  3. 自动终止:超过限制的搜索会被自动取消并释放资源
  4. 状态更新:被终止的搜索状态会标记为超时

使用示例 #

# 默认配置(12小时)
async_search.max_search_running_time: 12h

# 缩短超时时间(3小时)
async_search.max_search_running_time: 3h

# 延长超时时间(24小时)
async_search.max_search_running_time: 24h

# 设置为1小时
async_search.max_search_running_time: 1h

推荐设置建议 #

生产环境建议:根据实际业务查询特点设置

推荐配置:

# 短查询为主(1-3小时)
async_search.max_search_running_time: 3h

# 中等复杂度查询(6-12小时)
async_search.max_search_running_time: 12h

# 复杂聚合分析(12-24小时)
async_search.max_search_running_time: 24h

设置考虑因素:

  1. 查询复杂度:聚合、关联等复杂查询需要更长时间
  2. 数据量:大规模数据集的扫描和聚合耗时较长
  3. 资源保护:防止异常查询长时间占用资源
  4. 业务需求:确保合理的查询能在时限内完成

相关配置项 #

配置项作用默认值
async_search.max_keep_alive结果最大保留时间5天
async_search.active.context.reaper_interval活跃上下文清理间隔5分钟
async_search.node_concurrent_running_searches并发搜索数量限制20

搜索超时状态 #

当搜索超过最大运行时间时,异步搜索的状态将变为:

{
  "id": "Fm_QRn8BRiWfSeIP-2Xk7A",
  "status": "cancelled",
  "error": {
    "type": "search_context_execution_exception",
    "reason": "Search was cancelled as it ran longer than the maximum allowed time [12h]"
  }
}

超时检查机制 #

┌─────────────────────────────────────────────────────────┐
│              Async Search Started                        │
└─────────────────────────────────────────────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────┐
│         Active Context Reaper (每5分钟)                  │
│  检查: 当前时间 - 开始时间 > max_search_running_time?     │
└─────────────────────────────────────────────────────────┘
                        │
            ┌───────────┴───────────┐
            │ Yes                    │ No
            ▼                       ▼
┌───────────────────┐    ┌──────────────────────┐
│ 搜索被终止         │    │ 搜索继续执行         │
│ 释放资源           │    │ 等待下次检查         │
└───────────────────┘    └──────────────────────┘

注意事项 #

  1. 动态更新:修改此配置后立即生效,影响所有正在运行的异步搜索
  2. 与 keep_alive 的区别
    • max_search_running_time:控制搜索执行的最长时间
    • max_keep_alive:控制搜索结果保存的最长时间
  3. 资源释放:超时的搜索会被活跃上下文清理器清理,释放相关资源
  4. 监控建议:建议监控异步搜索的运行时间分布,根据实际情况调整此参数
  5. 合理设置:设置过短可能导致正常查询被意外终止,设置过长则无法有效保护资源