业务后台批量导出报表,多条范围查询频繁报 coprocessor timeout,简单单条查询执行正常,TiKV 节点 CPU 与内存负载不高,网络无抖动,索引已正常创建。
延长 TiDB 等待 TiKV 计算的超时时间,放大等待阈值
业务导出时把超大范围查询拆成多段小范围分批拉取,减少单次请求压力
调高 TiKV 用于处理查询计算的工作线程数量,提升并发处理能力
检查查询的索引覆盖情况,避免扫描过多数据分片,必要时给大表预先拆分分片均衡负载
出现 coprocessor timeout 代表 TiDB 下发到 TiKV 的协处理器计算任务超时,即便资源负载不高,批量大范围查询的数据分片过多、单批次扫描数据量过大也会触发该问题。优先改造导出查询逻辑,将大范围查询拆分为小范围分页 / 分段查询,减少单次发送给 TiKV 的计算压力;其次可适当调大 tidb_cop_timeout 延长协处理器等待超时时间,同时确认索引能够完整过滤数据,避免 TiKV 仍需扫描大量无效行;也可调整 TiKV readpool.coprocessor 相关线程参数提升协处理并发能力,批量导出任务建议限制并发数量,防止大量协处理请求堆积互相抢占资源。
大事务拆成小批次提交,每批1000-5000行循环。
Memory Tracker监控每条SQL内存使用。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。