--- title: "HTTP 读取超时配置" date: 2026-03-24 lastmod: 2026-03-24 description: "控制 HTTP 请求读取超时的配置说明" tags: ["HTTP", "超时", "网络配置"] summary: "配置项作用 # http.read_timeout 配置项指定 HTTP 服务器等待客户端发送数据的最大时间,防止连接长时间占用资源。 是否可选 # 是 默认值 # 0 (无超时限制) 配置项类型 # 静态配置 - 需要重启节点才能生效 配置格式 # # 无超时限制(默认) http.read_timeout: 0 # 设置 30 秒超时 http.read_timeout: 30s # 设置 5 分钟超时 http.read_timeout: 5m # 使用毫秒 http.read_timeout: 45000 工作原理 # ┌─────────────────────────────────────────────────────────┐ │ HTTP 连接处理 │ └─────────────────────────────────────────────────────────┘ 客户端连接 │ ▼ 开始接收请求 │ ├── 读取请求头 ├── 读取请求体 └── 读取数据块 │ ▼ 监控接收时间 │ ├── 超时?" --- ## 配置项作用 `http.read_timeout` 配置项指定 HTTP 服务器等待客户端发送数据的最大时间,防止连接长时间占用资源。 ## 是否可选 是 ## 默认值 ``` 0 (无超时限制) ``` ## 配置项类型 **静态配置** - 需要重启节点才能生效 ## 配置格式 ```yaml # 无超时限制(默认) 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 | 防止资源占用 | ## 使用示例 **默认配置:** ```yaml http.read_timeout: 0 ``` **生产环境配置:** ```yaml http.read_timeout: 60s ``` **大文件上传:** ```yaml http.read_timeout: 300s ``` ## 何时调整此设置 **需要超时限制的情况:** - 防止慢客户端占用连接 - 限制资源使用 - 提高系统响应能力 - 生产环境稳定性 **需要无限制或高超时的情况:** - 大批量数据导入 - 大文件上传 - 流式处理 - 慢速客户端 ## 超时处理 当超时发生时: 1. Netty 抛出 `ReadTimeoutException` 2. 转换为 `HttpReadTimeoutException` 3. 连接终止 4. 返回错误响应 ## 配置验证 ```bash # 查看当前配置 GET /_nodes/settings?filter_path=nodes.*.http.read_timeout # 测试超时行为 # 发送一个慢速请求测试超时 ``` ## 常见问题 **问题 1:请求超时** **症状:** - 大请求被中断 - 上传失败 **解决方案:** ```yaml # 增加超时时间 http.read_timeout: 300s ``` **问题 2:连接被占用** **症状:** - 活动连接过多 - 响应变慢 **解决方案:** ```yaml # 设置合理的超时 http.read_timeout: 60s ``` ## 注意事项 1. **静态配置**:修改超时需要重启节点 2. **客户端协调**:客户端超时应小于服务端超时 3. **监控超时**:频繁超时可能表示网络问题 4. **资源平衡**:平衡响应速度和可靠性 5. **无限制风险**:0 值可能导致资源耗尽 ## 相关配置项 | 配置项 | 默认值 | 说明 | |-------|-------|------| | `http.max_content_length` | 100mb | 请求体最大大小 | | `transport.connect_timeout` | 30s | 传输连接超时 | ## 完整配置示例 ```yaml # easysearch.yml # 生产环境配置 http.port: 9200 http.read_timeout: 60s http.max_content_length: 100mb ```