配置项作用 #
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
何时调整此设置 #
需要超时限制的情况:
- 防止慢客户端占用连接
- 限制资源使用
- 提高系统响应能力
- 生产环境稳定性
需要无限制或高超时的情况:
- 大批量数据导入
- 大文件上传
- 流式处理
- 慢速客户端
超时处理 #
当超时发生时:
- Netty 抛出
ReadTimeoutException - 转换为
HttpReadTimeoutException - 连接终止
- 返回错误响应
配置验证 #
# 查看当前配置
GET /_nodes/settings?filter_path=nodes.*.http.read_timeout
# 测试超时行为
# 发送一个慢速请求测试超时
常见问题 #
问题 1:请求超时
症状:
- 大请求被中断
- 上传失败
解决方案:
# 增加超时时间
http.read_timeout: 300s
问题 2:连接被占用
症状:
- 活动连接过多
- 响应变慢
解决方案:
# 设置合理的超时
http.read_timeout: 60s
注意事项 #
- 静态配置:修改超时需要重启节点
- 客户端协调:客户端超时应小于服务端超时
- 监控超时:频繁超时可能表示网络问题
- 资源平衡:平衡响应速度和可靠性
- 无限制风险:0 值可能导致资源耗尽
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
http.max_content_length | 100mb | 请求体最大大小 |
transport.connect_timeout | 30s | 传输连接超时 |
完整配置示例 #
# easysearch.yml
# 生产环境配置
http.port: 9200
http.read_timeout: 60s
http.max_content_length: 100mb





