在使用 Bulk API(通常指 Elasticsearch,但也适用于其他类似系统的批量接口)进行大规模数据写入时,遇到超时或失败通常是因为写入负载超过了集群的处理能力或网络传输瓶颈。 解决这个问题的核心思路是:“以时间换空间”(降低速率)和“减少不必要的开销”(优化配置)。 以下是具体的调整策略,按优先级从高到低排列: 1. 调整客户端请求参数(最直接的手段) 这是不需要重启服务就能做的调整。 调整 Batch Size(批量大小): 原则: 不要只看文档数量,要看请求体的大小(字节数)。 建议: 单个 Bulk 请求体的大小最好控制在 5MB 15MB 之间。 操作: 如果当前是 10,000 条/批,尝试降到 5,000 或 1,000,直到超时消失。如果单条数据很大(如包含大文本),甚至需要降到 100 条/批。 增加客户端超时时间(Client Timeout): 默认的 HTTP 超时(如 30秒)对于大批量写入可能太短。 建议: 将客户端的 Read Timeout 调整为 60秒甚至更长,给服务器足够的处理时间。 控制并发数(Concurrency): 多线程写...