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

配置项作用 #

http.read_timeout 配置项指定 HTTP 服务器等待客户端发送数据的最大时间,防止连接长时间占用资源。

是否可选 #

默认值 #

0 (无超时限制)

配置项类型 #

静态配置 - 需要重启节点才能生效

配置格式 #

# 无超时限制(默认)
http.read_timeout: 0

# 设置 30 秒超时
http.read_timeout: 30s

# 设置 5 分钟超时
http.read_timeout: 5m

# 使用毫秒
http.read_timeout: 45000

工作原理 #

┌─────────────────────────────────────────────────────────┐
│                   HTTP 连接处理                           │
└─────────────────────────────────────────────────────────┘

客户端连接
    │
    ▼
开始接收请求
    │
    ├── 读取请求头
    ├── 读取请求体
    └── 读取数据块
    │
    ▼
监控接收时间
    │
    ├── 超时?
    │   ├── 是 → 关闭连接,返回超时错误
    │   └── 否 → 继续接收
    │
    ▼
完成接收

推荐设置 #

场景推荐值说明
默认配置0无超时限制
快速网络30s常规请求
延迟网络60-120s网络不稳定
大文件上传300s+5 分钟以上
生产环境30-60s防止资源占用

使用示例 #

默认配置:

http.read_timeout: 0

生产环境配置:

http.read_timeout: 60s

大文件上传:

http.read_timeout: 300s

何时调整此设置 #

需要超时限制的情况:

  • 防止慢客户端占用连接
  • 限制资源使用
  • 提高系统响应能力
  • 生产环境稳定性

需要无限制或高超时的情况:

  • 大批量数据导入
  • 大文件上传
  • 流式处理
  • 慢速客户端

超时处理 #

当超时发生时:

  1. Netty 抛出 ReadTimeoutException
  2. 转换为 HttpReadTimeoutException
  3. 连接终止
  4. 返回错误响应

配置验证 #

# 查看当前配置
GET /_nodes/settings?filter_path=nodes.*.http.read_timeout

# 测试超时行为
# 发送一个慢速请求测试超时

常见问题 #

问题 1:请求超时

症状:

  • 大请求被中断
  • 上传失败

解决方案:

# 增加超时时间
http.read_timeout: 300s

问题 2:连接被占用

症状:

  • 活动连接过多
  • 响应变慢

解决方案:

# 设置合理的超时
http.read_timeout: 60s

注意事项 #

  1. 静态配置:修改超时需要重启节点
  2. 客户端协调:客户端超时应小于服务端超时
  3. 监控超时:频繁超时可能表示网络问题
  4. 资源平衡:平衡响应速度和可靠性
  5. 无限制风险:0 值可能导致资源耗尽

相关配置项 #

配置项默认值说明
http.max_content_length100mb请求体最大大小
transport.connect_timeout30s传输连接超时

完整配置示例 #

# easysearch.yml

# 生产环境配置
http.port: 9200
http.read_timeout: 60s
http.max_content_length: 100mb